翼度科技»论坛 编程开发 python 查看内容

【matplotlib基础】--绘图配置

9

主题

9

帖子

27

积分

新手上路

Rank: 1

积分
27
Matplotlib 提供了大量配置参数,
这些参数可以但不限于让我们从整体上调整通过 Matplotlib 绘制的图形样式,
这里面的参数还有很多是功能性的,和其他工具结合时需要用的配置。
通过plt.rcParams,可以查看所有的配置信息:
  1. import matplotlib.pyplot as plt
  2. print(len(plt.rcParams))
  3. #运行结果
  4. 312
复制代码
总共居然有312个配置选项。
一一介绍所有的选项意义不大,具体可参考官方文档:
https://matplotlib.org/stable/api/matplotlib_configuration_api.html#matplotlib.rcParams
本篇只是抛砖引玉,介绍几个常用的参数,目的是了解参数的使用方法和产生的效果。
1. 坐标轴

首先是坐标轴相关的配置,通过下面的代码可以看看有多个关于坐标轴的配置:
  1. import matplotlib.pyplot as plt
  2. count = 1
  3. for key, val in plt.rcParams.items():
  4.     #只打印以 axes 开头的配置
  5.     if key.startswith("axes"):
  6.         print(key, " = ", val)
  7.         count += 1
  8. #相关的配置有 38 个
  9. print(f"axes 相关设置有: {count} 个")
复制代码
一共有38个关于坐标轴的配置。
挑选一些配置,看看修改前后的效果:
  1. x = np.linspace(0, 10, 100)
  2. y1 = np.sin(x)
  3. y2 = np.cos(x)
  4. plt.rcParams.update(plt.rcParamsDefault)
  5. fig = plt.figure()
  6. ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
  7. ax.plot(x, y1, label="sin")
  8. ax.plot(x, y2, label="cos")
  9. ax.legend()
  10. plt.show()
复制代码

修改了背景色,边框和网格:
  1. x = np.linspace(0, 10, 100)
  2. y1 = np.sin(x)
  3. y2 = np.cos(x)
  4. plt.rcParams.update(plt.rcParamsDefault)
  5. plt.rc("axes", facecolor="#FFE4C4", edgecolor="#A52A2A", grid=True)
  6. fig = plt.figure()
  7. ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
  8. ax.plot(x, y1, label="sin")
  9. ax.plot(x, y2, label="cos")
  10. ax.legend()
  11. plt.show()
复制代码

2. 网格

关于网格,除了通过坐标轴来设置,它还有自己的一些专门的设置选项:
  1. count = 1
  2. for key, val in plt.rcParams.items():
  3.     if key.startswith("grid"):
  4.         print(key, " = ", val)
  5.         count += 1
  6. print(f"grid 相关设置有: {count} 个")
复制代码

总共有5个相关的配置,设置看看效果。
代码和上面类似,这里只把设置部分的代码列出来。
  1. plt.rcParams.update(plt.rcParamsDefault)
  2. plt.rc("axes", grid=True)
  3. plt.rc("grid", line, linewidth=2, color="g", alpha=0.5)
复制代码

这是修改后的效果,修改前的效果和上一节中的一样。
3. 刻度

刻度相关的参数如下:
  1. xcount = 1
  2. ycount = 1
  3. for key, val in plt.rcParams.items():
  4.     if key.startswith("xtick"):
  5.         print(key, " = ", val)
  6.         xcount += 1
  7.     if key.startswith("ytick"):
  8.         print(key, " = ", val)
  9.         ycount += 1
  10. print(f"xtick 相关设置有: {xcount} 个")
  11. print(f"ytick 相关设置有: {ycount} 个")
复制代码

X轴刻度和Y轴刻度的相关设置各有21个。
设置方法和效果如下:
  1. plt.rcParams.update(plt.rcParamsDefault)
  2. plt.rc("xtick", color="g", direction="in")
  3. plt.rc("ytick", color="r")
复制代码

上面的示例分别设置X轴Y轴的颜色,以及X轴的direction,
direction="in" 表示刻度的小短线在图形内部,
Y轴没设置这个属性,它的刻度线是在图形外的。
4. 颜色列表

我们绘制图形的时候,一个图形中有多个曲线时,每个曲线默认就会使用不同的颜色。
这是因为配置中有一个默认的颜色列表,绘制多个图形时,会依次使用其中的颜色。
  1. print(plt.rcParams["axes.prop_cycle"])
  2. #运行结果
  3. cycler('color',
  4. ['#1f77b4',
  5. '#ff7f0e',
  6. '#2ca02c',
  7. '#d62728',
  8. '#9467bd',
  9. '#8c564b',
  10. '#e377c2',
  11. '#7f7f7f',
  12. '#bcbd22',
  13. '#17becf'])
复制代码
如果去查下颜色编码的话,可以看出,前两个颜色就是蓝色和红色。
所以上面的示例中的两条曲线都是蓝色和红色。
修改下这个默认的颜色列表,看看变化效果:
  1. x = np.linspace(0, 10, 100)
  2. y1 = np.sin(x)
  3. y2 = np.cos(x)
  4. from matplotlib import cycler
  5. colors = cycler(
  6.     "color", ["#9467bd", "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22", "#17becf"]
  7. )
  8. plt.rcParams.update(plt.rcParamsDefault)
  9. plt.rc("axes", prop_cycle=colors)
  10. fig = plt.figure()
  11. ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
  12. ax.plot(x, y1, label="sin")
  13. ax.plot(x, y2, label="cos")
  14. ax.legend()
  15. plt.show()
复制代码

改变颜色列表之后,两条曲线的颜色都变了。
绘制曲线或者其他图形时,其实是有参数可以指定颜色的,为什么还需要这个颜色列表的配置?
这是因为,如果我们能够确定整体报告的风格,那么就可以在一开始就根据报告的风格设置好这个颜色列表,
然后绘制各种图形时就不需要指定颜色,极大简化后续的代码,也提高了代码的可维护性。
5. 总结

在配置 rcParams 时,我们可以根据需要修改各种选项,以达到更好的显示效果。
但需要注意的是,过多地修改 rcParams  可能会导致绘图缓慢或出现其他问题,
因此需要根据实际情况进行合理的配置。

来源:https://www.cnblogs.com/wang_yb/p/17699264.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具