概述
修改 matplotlib 的配置信息,可以满足定制化的展示需求,通过修改配置中的相关属性值可以使得可视化效果更加理想,相较于使用特定的风格,临时修改配置信息的方式粒度更小,操作也更轻。修改配置信息一般有两种途径,第一种通过代码进行修改,第二种则是直接修改底层配置文件。
Matplotlib 提供了很好的绘图功能。是 Python 中使用最多的数据可视化包。从代码层面修改配置信息,通常有两种实现方法,第一种调用属性字典 matplotlib.rcParams
或者是 matplotlib.pyplot.rcParams
,第二种方式是调用函数 matplotlib.rc()
或者调用 matplotlib.pyplot.rc()
。如果需要恢复到默认设置,则可以调用 matplotlib.rcdefaults()
。
在 matplotlib 中配置信息主要包含以下要素:
- Iines:设置线条属性, 包括颜色、线条风格、线条宽度和标记风格等。
- patch: 填充 2D 空间的图形对象, 包括多边形和圆。
- font:字体类别、字体风格、字体粗细和字体大小等。
- text:文本颜色、LaTex 渲染文本等。
- axes: 坐标轴的背景颜色、坐标轴的边缘颜色、刻度线的大小、刻度标签的字体大小等。
- xtick 和 ytick: x 轴和 y 轴的主次要刻度线的大小、宽度、刻度线高颜色和刻度标签大小等。
- grid: 网格颜色、网格线条风格、网格线条宽度和网格透明度。
- legend:图例的文本大小、阴影、图例线框风格等。
- figure: 画布标题大小、画布标题粗细、画布分辨率 (dpi)、画布背景颜色和边缘颜色等。
- savefig:保存画布图像的分辨率、背景颜色和边缘颜色等。
示例
调用属性字典
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
y = np.random.randn(100)
plt.plot(y)
画图效果如下:
通过以下代码更改 lines 的相关属性
mpl.rcParams['lines.linewidth'] = 2
mpl.rcParams['lines.linestyle'] = '--'
画图结果如下:
调用函数
通过以下代码,也可以达到和上文同样的效果:
lines_dict = {"linewidth" : 2, "linestyle": '--'}
mpl.rc(**lines_dict)
项目层面配置 matplotlib
上面两个示例中 matplotlib 的配置修改都是基于代码层面展开的,这就意味着每次编写代码都得进行相同的配置,这极大降低了项目的进度。例如在一个大型项目中,通常会有多个子项目,如果在每个子项目中都进行相同的 matplotlib 配置,这回严重影响项目进度。这时就可以使用一个独立于项目本身的 matplotlib 配置文件,也就是使用 matplotlibrc 文件进行 matplotlib 配置。
配置文件主要存在于三种路径中,不同的路径决定了配置文件的调用顺序,以下就是配置文件的三个路径:
- 项目所在路径;
- 默认配置文件路径,对于 Windows 平台,配置文件存在
$HOME/.matplotlibrc
中; - Matplotlib 的安装路径,对于 windows 平台,在
python\Lib\site-packages
中;
通过调用 matplotlib.matplotlib_fname()
方法可以输出系统在项目之外的搜索路径,方便大家理解。这里需要强调一点,每次重新安装 matplotlib 时,配置文件都会被覆盖,因此需要将配置文件移动到默认配置文件路径中。
往期回顾
- 【matplotlib】可视化解决方案——如何定制化网格
- 【matplotlib】可视化解决方案——如何向画布添加交叉直线
- 【matplotlib】可视化解决方案——如何解决matplotlib中文乱码问题
- 【matplotlib】可视化解决方案——如何设置matplotlib风格集
- 【matplotlib】可视化解决方案——如何设置轴标签的透明度和大小
- 【matplotlib】可视化解决方案——如何向图表中添加数据表
- 【matplotlib】可视化解决方案——如何更改绘图区域背景颜色
- 【matplotlib】可视化解决方案——如何使用数学公式
- 【matplotlib】可视化解决方案——绘图刻度设置
- 【matplotlib】可视化解决方案——子图设置大标题问题解决方案
文中难免会出现一些描述不当之处(尽管我已反复检查多次),欢迎在留言区指正,相关的知识点也可进行分享,希望大家都能有所收获!!如果觉得我的文章写得还行,不妨支持一下。你的每一个转发、关注、点赞、评论都是对我最大的支持!