本文详细介绍matplotlib-绘图风格(style)及rcParams设置。
本文速览
1、rcParams默认参数修改
rcParams中默认参数绘图
修改rcParams默认参数
取消rcParams参数修改
2、绘图风格设置
with局部修改绘图风格
使用mpl.rc_file_defaults()达到局部修改的目的
组合使用多种绘图风格
自定义绘图风格
1、rcParams默认参数修改
rcParams中存储了Matplotlib绘图时所有参数的默认值,参数详细:windows见:xx\anaconda3\anaconda3\Lib\site-packages\matplotlib\mpl-data\matplotlibrc
linux:matplotlib.matplotlib_fname()查看rcParams中默认参数绘图
import numpy as np
import matplotlib.pyplot as plt
plt.figure(dpi=100)
plt.plot([1,2,3])修改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'])取消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])
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])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])组合使用多种绘图风格
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']")自定义绘图风格
非常简单,只需要新建一个文件: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'xxx\anaconda3\anaconda3\Lib\site-packages\matplotlib\mpl-data\stylelib\my1st.mplstyle')#加绝对路径导入制作的style文件
plt.plot([1,2,3])
plt.title('My1st mplstyle')
参考资料
更多教程,欢迎微信关注@pythonic生物人