Matplotlib绘图基础之配置参数详解

 更新时间:2023年08月03日 10:11:57   作者:databook  
Matplotlib 提供了大量配置参数,这些参数可以但不限于让我们从整体上调整通过 Matplotlib 绘制的图形样式,下面我们就来看看如何巧妙的运用这些参数吧

Matplotlib 提供了大量配置参数,这些参数可以但不限于让我们从整体上调整通过 Matplotlib 绘制的图形样式,这里面的参数还有很多是功能性的,和其他工具结合时需要用的配置。

通过plt.rcParams,可以查看所有的配置信息:

import matplotlib.pyplot as plt
print(len(plt.rcParams))
#运行结果
312

总共居然有312个配置选项。

一一介绍所有的选项意义不大,具体可参考官方文档:https://matplotlib.org/stable/api/matplotlib_configuration_api.html#matplotlib.rcParams

本篇只是抛砖引玉,介绍几个常用的参数,目的是了解参数的使用方法和产生的效果。

1. 坐标轴

首先是坐标轴相关的配置,通过下面的代码可以看看有多个关于坐标轴的配置:

import matplotlib.pyplot as plt
count = 1
for key, val in plt.rcParams.items():
    #只打印以 axes 开头的配置
    if key.startswith("axes"):
        print(key, " = ", val)
        count += 1
#相关的配置有 38 个
print(f"axes 相关设置有: {count} 个")

一共有38个关于坐标轴的配置。

挑选一些配置,看看修改前后的效果:

x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.rcParams.update(plt.rcParamsDefault)
fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
ax.plot(x, y1, label="sin")
ax.plot(x, y2, label="cos")
ax.legend()
plt.show()

修改了背景色,边框和网格:

x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.rcParams.update(plt.rcParamsDefault)
plt.rc("axes", facecolor="#FFE4C4", edgecolor="#A52A2A", grid=True)
fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
ax.plot(x, y1, label="sin")
ax.plot(x, y2, label="cos")
ax.legend()
plt.show()

2. 网格

关于网格,除了通过坐标轴来设置,它还有自己的一些专门的设置选项:

count = 1
for key, val in plt.rcParams.items():
    if key.startswith("grid"):
        print(key, " = ", val)
        count += 1
print(f"grid 相关设置有: {count} 个")

总共有5个相关的配置,设置看看效果。

代码和上面类似,这里只把设置部分的代码列出来。

plt.rcParams.update(plt.rcParamsDefault)
plt.rc("axes", grid=True)
plt.rc("grid", linestyle="solid", linewidth=2, color="g", alpha=0.5)

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

3. 刻度

刻度相关的参数如下:

xcount = 1
ycount = 1
for key, val in plt.rcParams.items():
    if key.startswith("xtick"):
        print(key, " = ", val)
        xcount += 1
    if key.startswith("ytick"):
        print(key, " = ", val)
        ycount += 1
print(f"xtick 相关设置有: {xcount} 个")
print(f"ytick 相关设置有: {ycount} 个")

X轴刻度和Y轴刻度的相关设置各有21个。

设置方法和效果如下:

plt.rcParams.update(plt.rcParamsDefault)
plt.rc("xtick", color="g", direction="in")
plt.rc("ytick", color="r")

上面的示例分别设置X轴Y轴的颜色,以及X轴directiondirection="in" 表示刻度的小短线在图形内部,

Y轴没设置这个属性,它的刻度线是在图形外的。

4. 颜色列表

我们绘制图形的时候,一个图形中有多个曲线时,每个曲线默认就会使用不同的颜色。

这是因为配置中有一个默认的颜色列表,绘制多个图形时,会依次使用其中的颜色。

print(plt.rcParams["axes.prop_cycle"])
#运行结果
cycler('color', 
['#1f77b4', 
 '#ff7f0e', 
 '#2ca02c',
 '#d62728',
 '#9467bd',
 '#8c564b',
 '#e377c2',
 '#7f7f7f',
 '#bcbd22',
 '#17becf'])

如果去查下颜色编码的话,可以看出,前两个颜色就是蓝色和红色。

所以上面的示例中的两条曲线都是蓝色和红色。

修改下这个默认的颜色列表,看看变化效果:

x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
from matplotlib import cycler
colors = cycler(
    "color", ["#9467bd", "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22", "#17becf"]
)
plt.rcParams.update(plt.rcParamsDefault)
plt.rc("axes", prop_cycle=colors)
fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
ax.plot(x, y1, label="sin")
ax.plot(x, y2, label="cos")
ax.legend()
plt.show()

改变颜色列表之后,两条曲线的颜色都变了。

绘制曲线或者其他图形时,其实是有参数可以指定颜色的,为什么还需要这个颜色列表的配置?

这是因为,如果我们能够确定整体报告的风格,那么就可以在一开始就根据报告的风格设置好这个颜色列表,

然后绘制各种图形时就不需要指定颜色,极大简化后续的代码,也提高了代码的可维护性。

5. 总结

在配置 rcParams 时,我们可以根据需要修改各种选项,以达到更好的显示效果。

但需要注意的是,过多地修改 rcParams 可能会导致绘图缓慢或出现其他问题,因此需要根据实际情况进行合理的配置。

到此这篇关于Matplotlib绘图基础之配置参数详解的文章就介绍到这了,更多相关Matplotlib配置参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 利用Python的Django框架中的ORM建立查询API

    利用Python的Django框架中的ORM建立查询API

    这篇文章主要介绍了利用Python的Django框架中的ORM建立查询API,对Managers和QuerySets进行了着重介绍,需要的朋友可以参考下
    2015-04-04
  • Python FtpLib模块应用操作详解

    Python FtpLib模块应用操作详解

    这篇文章主要介绍了Python FtpLib模块应用操作,结合实例形式详细分析了FtpLib模块的功能、配置、应用相关操作技巧与使用注意事项,需要的朋友可以参考下
    2019-12-12
  • 深入理解Python虚拟机中复数(complex)的实现原理及源码剖析

    深入理解Python虚拟机中复数(complex)的实现原理及源码剖析

    在本篇文章当中主要给大家介绍在 cpython 虚拟机当中是如何实现 复数 complex 这个数据类型的,这个数据类型在 cpython 当中一应该是一个算比较简单的数据类型了,非常容易理解
    2023-03-03
  • 使用Selenium在Python中实现录屏功能

    使用Selenium在Python中实现录屏功能

    Selenium 是一个强大的用于自动化测试的工具,但你知道它也可以用来录制浏览器操作的视频吗?本文将介绍如何使用 Selenium 在 Python 中实现录屏功能,以便记录和分享你的网页操作过程,需要的朋友可以参考下
    2023-11-11
  • Python检查判断一个数是不是另一个数的整数次幂实例深究

    Python检查判断一个数是不是另一个数的整数次幂实例深究

    在数学和计算中,确定一个数是否为另一个数的整数次幂是一个常见而重要的问题,例如,我们可能需要判断一个数是否是某个数的平方、立方或其他幂次,本文将探讨在Python中如何实现这一功能,通过数学方法和算法检查一个数是否是另一个数的整数次幂
    2023-12-12
  • 全面剖析Python的Django框架中的项目部署技巧

    全面剖析Python的Django框架中的项目部署技巧

    这篇文章主要全面剖析了Python的Django框架的部署技巧,包括Fabric等自动化部署和建立单元测试等方面,强烈推荐!需要的朋友可以参考下
    2015-04-04
  • 如何用python绘制散点图

    如何用python绘制散点图

    这篇文章主要介绍了如何用python绘制散点图问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • python实现机器人行走效果

    python实现机器人行走效果

    这篇文章主要为大家详细介绍了python实现机器人行走效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • python3射线法判断点是否在多边形内

    python3射线法判断点是否在多边形内

    这篇文章主要为大家详细介绍了python3射线法判断点是否在多边形内,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • Django admin禁用编辑链接和添加删除操作详解

    Django admin禁用编辑链接和添加删除操作详解

    今天小编就为大家分享一篇Django admin禁用编辑链接和添加删除操作详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11

最新评论