这篇文章适合 Matplotlib 绘图入门的小伙伴, 同时也可以作为备忘录, 熟悉常见的绘图参数。
params:
@figsize: 图片显示比例, 类比显示器比例 @dpi: 图片分辨率
import matplotlib.pyplot as plt
if __name__ == '__main__':
x = [1,2,3,4,5]
y = [1,2,3,4,5]
plt.figure(figsize=(9, 5), dpi=150) # 核心
plt.plot(x, y)
plt.show()
params:
@color: 颜色 @ls: line style - 曲线类型 (实线、虚线等) @lw: line weight - 曲线粗细
import matplotlib.pyplot as plt
if __name__ == '__main__':
x = [1,2,3,4,5]
y = [1,2,3,4,5]
plt.figure(figsize=(9, 5), dpi=150)
plt.plot(x, y)
plt.grid(color='gray', ls='-', lw=0.25) # 核心
plt.show()
params:
@color: 颜色 @ls: line style - 曲线类型 (实线、虚线等) @lw: line weight - 曲线粗细 @label: 曲线标签 @marker: 曲线标记 - 有多个样式可选 @markevery: 曲线标记显示间隔, 每隔多少个x显示一次
import matplotlib.pyplot as plt
if __name__ == '__main__':
x = [i for i in range(500)]
y = [i for i in range(500)]
plt.figure(figsize=(9, 5), dpi=150)
plt.plot(x, y, color='blue', ls='-', lw=1, label='curve', marker='*', markevery=20) # 核心
plt.grid(color='gray', ls='-', lw=0.25)
plt.legend(loc="best") # 核心
plt.show()
plt.ylim(0, 100) # x轴 plt.xlim(0, 100) # y轴
import matplotlib.pyplot as plt
if __name__ == '__main__':
x = [i for i in range(500)]
y = [i for i in range(500)]
plt.figure(figsize=(9, 5), dpi=150)
plt.plot(x, y, color='blue', ls='-', lw=1, label='curve', marker='*', markevery=20)
plt.grid(color='gray', ls='-', lw=0.25)
plt.ylim(0, 100)
plt.xlim(0, 100)
plt.legend(loc="best")
plt.show()
params:
@x: x轴位置 @y: y轴位置 @s: 要显示的字符串 @fontdict: 文本样式
import matplotlib.pyplot as plt
if __name__ == '__main__':
x = [i for i in range(500)]
y = [i for i in range(500)]
plt.figure(figsize=(9, 5), dpi=150)
plt.plot(x, y, color='blue', ls='-', lw=1, label='curve', marker='*', markevery=20)
plt.grid(color='gray', ls='-', lw=0.25)
plt.ylim(0, 100)
plt.xlim(0, 100)
plt.text(x=90, # 文本x轴坐标
y=70, # 文本y轴坐标
s=str("R²: 0.99"), # 文本内容
fontdict=dict(fontsize=8, color='black',
family='monospace', # 字体,可选'serif', 'sans-serif', 'cursive', 'fantasy', 'monospace'
weight='light', # 磅值,可选'light', 'normal', 'medium', 'semibold', 'bold', 'heavy', 'black'
) # 字体属性设置
)
plt.legend(loc="best")
plt.show()
简要介绍:
(1) 两个新引入的 API
- inset_axes: 插入新的子图坐标系, 用于绘制子图
- mark_inset: 绘制子图和父图之间的连接线
(2) 具体参数
见下述代码注释部分, 参考链接: [1] 知乎 - 局部放大图绘制
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1.inset_locator import inset_axes, mark_inset
if __name__ == '__main__':
x = [i for i in range(500)]
y = [i for i in range(500)]
fig, ax = plt.subplots(1, 1, figsize=(16, 9), dpi=150)
ax.plot(x, y, color='blue', ls='-', lw=1, label='curve', marker='*', markevery=20)
ax.grid(color='gray', ls='-', lw=0.25)
ax.text(x=90, # 文本x轴坐标
y=70, # 文本y轴坐标
s=str("R²: 0.99"), # 文本内容
fontdict=dict(fontsize=8, color='black',
family='monospace', # 字体,可选'serif', 'sans-serif', 'cursive', 'fantasy', 'monospace'
weight='light', # 磅值,可选'light', 'normal', 'medium', 'semibold', 'bold', 'heavy', 'black'
) # 字体属性设置
)
ax.legend(loc="best")
# 设置局部放大图的范围
"""
ax:父坐标系
width, height:子坐标系的宽度和高度(百分比形式或者浮点数个数)
loc:子坐标系的位置
bbox_to_anchor:边界框,四元数组(x0, y0, width, height)
以父坐标系中的 x0=x0*x,y0=y0*y 为左下角起点,嵌入一个宽度为 width*x,高度为 height*y 的子坐标系
bbox_transform:从父坐标系到子坐标系的几何映射
axins:子坐标系
"""
axins = inset_axes(ax, width="40%", height="30%", loc='lower left',
bbox_to_anchor=(0.5, 0.1, 1, 1),
bbox_transform=ax.transAxes)
axins.set_xlim(200, 300)
axins.set_ylim(200, 300)
# 绘制局部放大图
axins.plot(x, y, color='blue', ls='-', lw=1, label='curve', marker='o', markevery=20)
# 添加连接线
"""
loc1 loc2: 坐标系的四个角
1 (右上) 2 (左上) 3(左下) 4(右下)
"""
mark_inset(ax, axins, loc1=1, loc2=3, fc="none", ec="0.5")
plt.show()
简要介绍:
(1) 直线
- axvline: vertical - 垂直于X轴, 也即平行于Y轴曲线
- axhline: 平行于X轴, 垂直于Y轴
(2) 具体参数
params:
@x: x坐标 @y: y坐标 @c: 颜色 @linestyle: 线条样式
import matplotlib.pyplot as plt
if __name__ == '__main__':
x = [i for i in range(500)]
y = [i for i in range(500)]
plt.figure(figsize=(9, 5), dpi=150)
plt.plot(x, y, color='blue', ls='-', lw=1, label='curve', marker='*', markevery=20)
plt.grid(color='gray', ls='-', lw=0.25)
plt.ylim(0, 400)
plt.xlim(0, 400)
plt.text(x=90, # 文本x轴坐标
y=70, # 文本y轴坐标
s=str("R²: 0.99"), # 文本内容
fontdict=dict(fontsize=8, color='black',
family='monospace', # 字体,可选'serif', 'sans-serif', 'cursive', 'fantasy', 'monospace'
weight='light', # 磅值,可选'light', 'normal', 'medium', 'semibold', 'bold', 'heavy', 'black'
) # 字体属性设置
)
plt.legend(loc="best")
plt.axvline(x=100, c='darkred', linestyle='--')
plt.axhline(y=100, c='darkred', linestyle='--')
plt.show()
暂时这些, 后续继续更新...
★ 创作不易, 引用请转载。