Matplotlib 曲线图参数详解

这篇文章适合 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()

 

 


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

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

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值