• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

python matplotlib绘图

武飞扬头像
地球被支点撬走啦
帮助1

目录

1、画线

a、常规画线: matplotlib.pyplot.plot()

1)线的颜色、风格、标记点形状

2)一图多线,并加图例

b、非均匀画线 semilogy()

c、给特定的点打标签

2、散点图

3、画矩阵

4、自定义坐标轴显示内容 xticks()/yticks()


官网教程:Plot types — Matplotlib 3.5.2 documentation

1、画线

a、常规画线: matplotlib.pyplot.plot()

该部分内容包含:(常规画线、颜色、线条风格、坐标轴标签、一图多线、图例)的设置方法。

定义:

plot(*args, scalex=True, scaley=True, data=None, **kwargs)

用法:

对于一般的函数 y=f(x),可以直接绘制:plt.plot(x, y),当省略x坐标时 plt.plot(y),默认x坐标从零开始依次递增1个单位长度。

  1.  
    # 在[0, 30]范围内均匀取30个点
  2.  
    x_data = np.linspace(0, 10, 30)
  3.  
    y_data = np.sin(x_data)
  4.  
    # 画图,第一个参数是x值,第二个是y值
  5.  
    plt.plot(x_data, y_data)
  6.  
    # 坐标轴标签
  7.  
    plt.ylabel("sin(x)") # y轴
  8.  
    plt.xlabel("x") # x轴
  9.  
    # 图的标题
  10.  
    plt.title("y=sin(x)")
  11.  
    # 画图
  12.  
    plt.show()

使用 plt.title("y=sin(x)") 可以设置图的标题,使用 plt.ylabel() 函数设置坐标轴标签,最终图像的显示使用 plt.show() 函数

学新通

1)线的颜色、风格、标记点形状

线的颜色使用 color 属性设置,线的风格linestyle 属性设置,每个采样点处的标记形状marker 属性设置如 设置洋红色虚线并用下三角标记每个采样点:

plt.plot(y_data, color='m', marker='v', linestyle='--')

学新通

matplotlib 的所有颜色设置方法都类似,可选的颜色如下,属性设置中可以使用首字母或者全拼。

character

color

'b'

blue    蓝色

'g'

green  绿色

'r'

red      红色

'c'

cyan    蓝绿色(青色)

'm'

magenta 品红(洋红)—我也不知道这是啥shair,品红(R:128 G:0 B:128)

'y'

yellow 黄色

'k'

black   黑色

'w'

white   白色

可选的线条风格如下:

character

description

'-'

实线

'--'

虚线

'-.'

点实线

':'

点线

可选的所有标记形状如下:(不太好翻译的就用原英文描述代替了)

character

description

'.'

','

像素

'o'

圆圈

'v'

下三角  triangle_down marker

'^'

上三角

'<'

左三角

'>'

右三角

'1'

tri_down marker  

'2'

tri_up marker

'3'

tri_left marker

'4'

tri_right marker

'8'

八边形  octagon marker

's'

四边形  square marker

'p'

五边形 pentagon marker

'P'

注意是大写P。plus (filled) marker

'*'

星标  star marker

'h'

六边形1  hexagon1 marker

'H'

hexagon2 marker

' '

加号  plus marker

'x'

x号 x marker

'X'

x (filled) marker

'D'

菱形  diamond marker

'd'

thin_diamond marker

'|'

vline marker

'_'

hline marker

上例中的三种属性还可以使用组合形式符号:

plt.plot(y_data, 'm--v')

2)一图多线,并加图例

一图多线直接使用多个 plot 函数即可,图例在 plot 函数中通过 label 属性设置,并使用 legend() 函数设置显示位置,如下:

  1.  
    # 在[0, 30]范围内均匀取30个点
  2.  
    x = np.linspace(0, 10, 30)
  3.  
    y1 = np.sin(x)
  4.  
    y2 = np.cos(x)
  5.  
    plt.plot(y1, 'm-v', label='sin') # y1曲线标签为sin
  6.  
    plt.plot(y2, 'g-o', label='cos') # y2曲线标签为cos
  7.  
    plt.ylabel("sin(x)/cos(x)")
  8.  
    plt.xlabel("x")
  9.  
    # 给图片在右上角添加图例
  10.  
    plt.legend(loc=0)
  11.  
    plt.title("multi-lines")
  12.  
    plt.show()

效果,注意各种标签出现的位置:

学新通

b、非均匀画线 semilogy()

有时可能会遇到数据跨度比较长但大部分数据可能集中在一段区域的情况,这时可以使用 semilogy() 函数来绘制曲线,最终的效果是将函数值取对数后绘制曲线。semilogx() 的用法类似。

比如通信领域常用的不同SNR下的BER曲线就是这样的情况,例子如下:

可以使用 plt.grid(True) 函数设置显示网格线。

  1.  
    SNR = [0, 5 ,10, 15, 20, 25, 30]
  2.  
    result = [0.15, 0.08, 0.03, 0.015, 0.005, 0.001, 0.0008]
  3.  
    plt.semilogy(result, 'm--v', label='SNR-BER') # 对 result 取 log 后画线
  4.  
    plt.xlabel("SNR")
  5.  
    plt.ylabel("BER")
  6.  
    plt.title("log-line")
  7.  
    plt.legend(loc=0)
  8.  
    plt.grid(True) # 显示网格线
  9.  
    plt.show()

结果如下,注意 y 轴的坐标取值情况:

学新通

c、给特定的点打标签

对于特殊的点,想标记出其对应的值,可以使用 plt.text(a, b, val, color='r') 函数。

如给上例第四个点标注下具体地值,可以添加以下语句:

plt.text(SNR[3], result[3], result[3], color = 'r')  # 标注第 4 个点的值

效果:

学新通

2、散点图

散点图主要使用 matplotlib.pyplot.scatter() 函数:

定义:matplotlib.pyplot.scatter — Matplotlib 3.5.2 documentation

scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)

除了 x,y其他都是可选参数,同样有 marker、color 参数,这俩参数用法与 plot 一样。

  1.  
    SNR = [0, 5 ,10, 15, 20, 25, 30]
  2.  
    result = [0.15, 0.08, 0.03, 0.015, 0.005, 0.001, 0.0008]
  3.  
    # 散点图
  4.  
    plt.scatter(SNR, result, marker='v', color='b', label='SNR-BER')
  5.  
    plt.xlabel("SNR")
  6.  
    plt.ylabel("BER")
  7.  
    plt.title("log-line")
  8.  
    plt.legend(loc=0)
  9.  
    plt.grid(True) # 显示网格线
  10.  
    plt.show()

学新通

3、画矩阵

可以使用 matplotlib.pyplot.matshow() 函数绘制二维矩阵的图像。

这一般在矩阵可视化的时候用的比较多。另外可以使用 colorbar() 函数设置显示颜色标记。

比如绘制一个对角矩阵的图像:

  1.  
    # 创建对角矩阵
  2.  
    a = np.diag(range(15))
  3.  
    fig = plt.matshow(a)
  4.  
    # 显示颜色标记
  5.  
    plt.colorbar(fig.colorbar, fraction=0.2)
  6.  
    plt.show()

效果如下:

学新通

4、自定义坐标轴显示内容 xticks()/yticks()

如果坐标轴想用其他字符显示,可以使用 xticks() / yticks() 函数。函数第一个参数是原来的坐标显示列表,第二个参数是实际的显示字符。

  1.  
    # 创建对角矩阵
  2.  
    a = np.diag(range(5))
  3.  
    fig = plt.matshow(a)
  4.  
    # 显示颜色标记
  5.  
    plt.colorbar(fig.colorbar, fraction=0.2)
  6.  
    # 自定义 y 轴显示内容
  7.  
    plt.yticks(range(5),
  8.  
    ['A', 'B', 'C', 'D', 'E'])
  9.  
    plt.show()

效果如下:

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfgfig
系列文章
更多 icon
同类精品
更多 icon
继续加载