查看原文
其他

Python可视化33|matplotlib-rcParams及绘图风格(style)设置详解

pythonic生物人 pythonic生物人 2022-09-11


"pythonic生物人"的第78篇分享



本文详细介绍matplotlib-绘图风格(style)及rcParams设置。

本文速览

更多教程,欢迎关注@pythonic生物人

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')

 参考资料

  • https://matplotlib.org/tutorials/introductory/customizing.html#customizing-with-matplotlibrc-files
  • https://github.com/matplotlib/matplotlib/blob/master/matplotlibrc.template

更多教程,欢迎微信关注@pythonic生物人


同系列文章

Python可视化30|matplotlib-辅助线(axhline|vlines|axvspa|axhspan)
Python可视化31|matplotlib-图添加文本(text)及注释(annotate)
Python可视化32|matplotlib-断裂坐标轴(broken_axis)|图例(legend)详解
Python可视化|matplotlib04-绘图风格(plt.style)大全


"点赞"、"在看"鼓励下呗

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存