> 文章列表 > Matplotlib 曲线图参数详解

Matplotlib 曲线图参数详解

Matplotlib 曲线图参数详解

这篇文章适合 Matplotlib 绘图入门的小伙伴, 同时也可以作为备忘录, 熟悉常见的绘图参数。

设置绘图比例和分辨率

params

@figsize: 图片显示比例, 类比显示器比例
@dpi: 图片分辨率
import matplotlib.pyplot as pltif __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 pltif __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 pltif __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 pltif __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 pltif __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_insetif __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 pltif __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()

 

 


暂时这些, 后续继续更新...

★ 创作不易, 引用请转载。

VR资源