python matplotlib绘图
目录
a、常规画线: matplotlib.pyplot.plot()
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个单位长度。
-
# 在[0, 30]范围内均匀取30个点
-
x_data = np.linspace(0, 10, 30)
-
y_data = np.sin(x_data)
-
# 画图,第一个参数是x值,第二个是y值
-
plt.plot(x_data, y_data)
-
# 坐标轴标签
-
plt.ylabel("sin(x)") # y轴
-
plt.xlabel("x") # x轴
-
# 图的标题
-
plt.title("y=sin(x)")
-
# 画图
-
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 |
---|---|
|
blue 蓝色 |
|
green 绿色 |
|
red 红色 |
|
cyan 蓝绿色(青色) |
|
magenta 品红(洋红)—我也不知道这是啥shair,品红(R:128 G:0 B:128) |
|
yellow 黄色 |
|
black 黑色 |
|
white 白色 |
可选的线条风格如下:
character |
description |
---|---|
|
实线 |
|
虚线 |
|
点实线 |
|
点线 |
可选的所有标记形状如下:(不太好翻译的就用原英文描述代替了)
character |
description |
---|---|
|
点 |
|
像素 |
|
圆圈 |
|
下三角 triangle_down marker |
|
上三角 |
|
左三角 |
|
右三角 |
|
tri_down marker |
|
tri_up marker |
|
tri_left marker |
|
tri_right marker |
|
八边形 octagon marker |
|
四边形 square marker |
|
五边形 pentagon marker |
|
注意是大写P。plus (filled) marker |
|
星标 star marker |
|
六边形1 hexagon1 marker |
|
hexagon2 marker |
|
加号 plus marker |
|
x号 x marker |
|
x (filled) marker |
|
菱形 diamond marker |
|
thin_diamond marker |
|
vline marker |
|
hline marker |
上例中的三种属性还可以使用组合形式符号:
plt.plot(y_data, 'm--v')
2)一图多线,并加图例
一图多线直接使用多个 plot 函数即可,图例在 plot 函数中通过 label 属性设置,并使用 legend() 函数设置显示位置,如下:
-
# 在[0, 30]范围内均匀取30个点
-
x = np.linspace(0, 10, 30)
-
y1 = np.sin(x)
-
y2 = np.cos(x)
-
plt.plot(y1, 'm-v', label='sin') # y1曲线标签为sin
-
plt.plot(y2, 'g-o', label='cos') # y2曲线标签为cos
-
plt.ylabel("sin(x)/cos(x)")
-
plt.xlabel("x")
-
# 给图片在右上角添加图例
-
plt.legend(loc=0)
-
plt.title("multi-lines")
-
plt.show()
效果,注意各种标签出现的位置:
b、非均匀画线 semilogy()
有时可能会遇到数据跨度比较长但大部分数据可能集中在一段区域的情况,这时可以使用 semilogy() 函数来绘制曲线,最终的效果是将函数值取对数后绘制曲线。semilogx() 的用法类似。
比如通信领域常用的不同SNR下的BER曲线就是这样的情况,例子如下:
可以使用 plt.grid(True) 函数设置显示网格线。
-
SNR = [0, 5 ,10, 15, 20, 25, 30]
-
result = [0.15, 0.08, 0.03, 0.015, 0.005, 0.001, 0.0008]
-
plt.semilogy(result, 'm--v', label='SNR-BER') # 对 result 取 log 后画线
-
plt.xlabel("SNR")
-
plt.ylabel("BER")
-
plt.title("log-line")
-
plt.legend(loc=0)
-
plt.grid(True) # 显示网格线
-
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 一样。
-
SNR = [0, 5 ,10, 15, 20, 25, 30]
-
result = [0.15, 0.08, 0.03, 0.015, 0.005, 0.001, 0.0008]
-
# 散点图
-
plt.scatter(SNR, result, marker='v', color='b', label='SNR-BER')
-
plt.xlabel("SNR")
-
plt.ylabel("BER")
-
plt.title("log-line")
-
plt.legend(loc=0)
-
plt.grid(True) # 显示网格线
-
plt.show()
3、画矩阵
可以使用 matplotlib.pyplot.matshow() 函数绘制二维矩阵的图像。
这一般在矩阵可视化的时候用的比较多。另外可以使用 colorbar() 函数设置显示颜色标记。
比如绘制一个对角矩阵的图像:
-
# 创建对角矩阵
-
a = np.diag(range(15))
-
fig = plt.matshow(a)
-
# 显示颜色标记
-
plt.colorbar(fig.colorbar, fraction=0.2)
-
plt.show()
效果如下:
4、自定义坐标轴显示内容 xticks()/yticks()
如果坐标轴想用其他字符显示,可以使用 xticks() / yticks() 函数。函数第一个参数是原来的坐标显示列表,第二个参数是实际的显示字符。
-
# 创建对角矩阵
-
a = np.diag(range(5))
-
fig = plt.matshow(a)
-
# 显示颜色标记
-
plt.colorbar(fig.colorbar, fraction=0.2)
-
# 自定义 y 轴显示内容
-
plt.yticks(range(5),
-
['A', 'B', 'C', 'D', 'E'])
-
plt.show()
效果如下:
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgfgfig
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13