![4dad60dc2afc07b76e034ccc0995e77f.png](https://i-blog.csdnimg.cn/blog_migrate/5913d93628d412c439bc34586083d62d.png)
本文详细介绍matplotlib- 绘图风格(style)及rcParams设置。
本文速览
更多教程,欢迎关注@pythonic生物人
1、rcParams默认参数修改
rcParams中默认参数绘图
修改rcParams默认参数
取消rcParams参数修改
2、绘图风格设置
with局部修改绘图风格
使用mpl.rc_file_defaults()达到局部修改的目的
组合使用多种绘图风格
自定义绘图风格
1、rcParams默认参数修改
rcParams中存储了Matplotlib绘图时所有参数的默认值,参数详细:
windows见:xxanaconda3anaconda3Libsite-packagesmatplotlibmpl-datamatplotlibrc
linux:matplotlib.matplotlib_fname()查看
- rcParams中默认参数绘图
import numpy as np
import matplotlib.pyplot as plt
plt.figure(dpi=100)
plt.plot([1,2,3])
![9e86225dba2d1dd1e5bc6572687f7e7d.png](https://i-blog.csdnimg.cn/blog_migrate/c4d352e723508d3cef70963619a3106b.png)
- 修改rcParams默认参数
mpl.rc_params()类似一个字典对象,所以可以通过键修改其值,变动为全局修改,改动后整个figure都实用【jupyter notebook中每个cell都使用该风格】,除非重新启动了IDE。
以下修改部分默认参数:
#lines.linestyle: -#默认线性为实心线'-'
#lines.marker: None#默认线上无marker
#axes.grid: False#默认无网格线
#默认绘图颜色修改
#axes.prop_cycle cycler('color', ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf'])
mpl.rcParams['lines.marker'] = '^'
mpl.rcParams['lines.linestyle'] = '--'
mpl.rcParams['axes.grid'] = True
mpl.rcParams['axes.prop_cycle'] = cycler(color=['r', 'g', 'b', 'y'])
plt.figure(dpi=100)
plt.plot([1,2,3])
print(mpl.rcParams['lines.marker'])
![f917c35ff48648e17f62ab17cc5fe325.png](https://i-blog.csdnimg.cn/blog_migrate/824de93b81bf635ad12aaede3a1c7a61.png)
- 取消rcParams参数修改
有mpl.rc_file_defaults()和mpl.rcdefaults()两种方法可以使用:
mpl.rc_file_defaults(): 恢复到本次导入matplotlib时的默认配置【建议该种方式,类似写了一天的论文没有保存,昨天写的依旧在】
mpl.rcdefaults():恢复到下载matplotlib时的默认配置【不建议,类似手机恢复出厂设置】
当然,最原始的方式就是重新启动ide即可达到mpl.rc_file_defaults()的效果。
mpl.rcParams['lines.marker'] = '^'
mpl.rcParams['lines.linestyle'] = '--'
mpl.rcParams['axes.grid'] = True
mpl.rc_file_defaults() #取消以上修改的默认参数
plt.figure(dpi=100)
plt.plot([1,2,3])
![de7da1d8874a90d7a7668647effb6499.png](https://i-blog.csdnimg.cn/blog_migrate/9bd0b3f36d7ee08751e9ca30c1c94080.png)
2、绘图风格设置
matplotlib绘图风格的使用见之前文章:matplotlib 26中绘图风格大全
- with局部修改绘图风格
绘图风格只对with模块中的axes起作用
import numpy as np
import matplotlib.pyplot as plt
mpl.rc_file_defaults()
my_dpi=96
plt.figure(figsize=(480/my_dpi,480/my_dpi),dpi=my_dpi)
plt.figure()
with plt.style.context('ggplot'):#使用with 临时修改绘图风格
plt.subplot(221)
plt.plot([-1,0,1])
plt.subplot(222)#因为上一个子图只是临时修改,所以当前子图使用了默认风格,没有沿用'ggplot'风格
plt.plot([1,2,3])
plt.style.use('fivethirtyeight')#
plt.subplot(223)#必需置于style之后,否则毫无用处
plt.plot([1,2,3])
plt.subplot(224)#因为上一个子图修改了全局变量风格,所以当前子图沿用'fivethirtyeight'风格
plt.plot([1,2,3])
![e4c4527fe474da2bb1d381cf96a3063d.png](https://i-blog.csdnimg.cn/blog_migrate/ecd89dbb31f1c8fa121220fbc089067c.png)
- mpl.rc_file_defaults()局部修改绘图风格
直接使用mpl.rc_file_defaults()清除所有设置,但时,不建议使用,因为有时候我们不单单只是修改了style。还修改了其它默认参数。
plt.style.use('fivethirtyeight')#
plt.subplot(121)#必需置于style之后,否则毫无用处
plt.plot([1,2,3])
mpl.rc_file_defaults()#清除格式
plt.subplot(122)#因为上一个子图修改了全局变量风格,所以当前子图沿用'fivethirtyeight'风格
plt.plot([1,2,3])
![3e290fb88d9a5813c04a2b098ef176db.png](https://i-blog.csdnimg.cn/blog_migrate/bf140511655f89a1b59d7f2b44d0701b.png)
- 组合使用多种绘图风格
mpl.rc_file_defaults()
plt.style.use('fivethirtyeight')
plt.subplot(131)
plt.plot([1,2,3])
plt.title("'fivethirtyeight'")
mpl.rc_file_defaults()
plt.style.use('ggplot')
plt.subplot(132)
plt.plot([1,2,3])
plt.title("'ggplot'")
mpl.rc_file_defaults()#清除格式
plt.style.use(['fivethirtyeight', 'ggplot'])#风格'fivethirtyeight', 'ggplot'结合
plt.subplot(133)
plt.plot([1,2,3])
plt.title("['fivethirtyeight', 'ggplot']")
![4707c7a1860d83bb9f55491c26cdff21.png](https://i-blog.csdnimg.cn/blog_migrate/40c5778fcf64b27a9082dd5dd8b364ba.jpeg)
- 自定义绘图风格
非常简单,只需要新建一个文件:my1st.mplstyle
输入你想修改的内容,举例如下:
axes.prop_cycle: cycler('color', ['c72e29', 'fc4f30', 'e5ae38', '6d904f', '8b8b8b', '810f7c'])
axes.titlesize : 16
axes.labelsize : 15
axes.grid : True
grid.color : 0.8
axes.facecolor: 0.98
axes.spines.top : False
axes.spines.right: False
lines.linewidth : 1.5
lines.linestyle : --
lines.marker : *
lines.markerfacecolor : 098154
lines.markeredgewidth: 0
lines.markersize : 20
xtick.labelsize : 10
ytick.labelsize : 10
使用my1st.mplstyle风格绘张图:
mpl.rc_file_defaults()
plt.style.use(r'xxxanaconda3anaconda3Libsite-packagesmatplotlibmpl-datastylelibmy1st.mplstyle')#加绝对路径导入制作的style文件
plt.plot([1,2,3])
plt.title('My1st mplstyle')
![3d0d6a12b479dfe35406231fafa301fe.png](https://i-blog.csdnimg.cn/blog_migrate/eb30d63985287e2a2ee37068803d5fd0.png)
参考资料
- https://matplotlib.org/tutorials/introductory/customizing.html#customizing-with-matplotlibrc-files
- https://github.com/matplotlib/matplotlib/blob/master/matplotlibrc.template
更多教程,欢迎微信关注@pythonic生物人