前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自定义matplotlib

自定义matplotlib

作者头像
bugsuse
发布2020-04-21 17:39:33
9150
发布2020-04-21 17:39:33
举报
文章被收录于专栏:气象杂货铺

使用 matplotlib 绘图时,通常已经有默认的图形设置,但是有时候默认的图形设置可能并不能满足的你的要求,而又需要经常使用自定义的设置,那么就需要对 matplotlib 默认设置进行更改,从而以满足需求。

使用类型表

style 包中添加了和 matplotlibrc 文件(启动时会读取文件进行配置)中相同的参数,可以非常容易的切换绘图类型。

matplotlib 提供了一系列预定义的类型。比如:ggplot 类型,模仿了R语言中的 ggplot 包样式。

执行以下语句可以使用此类型:

代码语言:javascript
复制
>>> import matplotlib.pyplot as plt
>>> plt.style.use('ggplot')

使用其他类型之前,看一下支持的类型:

代码语言:javascript
复制
>>> print(plt.style.available)
  • 自定义类型

matplotlib提供了自定义style的方式,并且可以使用类型表的路径或URL通过style.use调用。

除此之外,可以将 <style-name>.mplstyle 文件添加到 mpl_configdir/stylelib中,便可以通过 style.use(<style-name>)重复使用自定义的style。默认情况下,mpl_configdir 应该在 ~/.config/matplotlib。可以执matplotlib.get_configdir()命令确定路径。如果此目录不存在,可能需要创建。通过设置MPLCONFIGDIR环境变量可以改变matplotlib寻找 stylelib/ 的路径。

注意:如果在 mpl_configdir/stylelib 中自定义类型名和 matplotlib中已有的类型名相同,那么已有的类型会被覆盖

例如,你创建了 mpl_configdir/stylelib/presentation.mplstyle 类型文件:

代码语言:javascript
复制
axes.titlesize : 24
axes.labelsize : 20
lines.linewidth : 3
lines.markersize : 10
xtick.labelsize : 16
ytick.labelsize : 16

然后,可以通过如下方式调用:

代码语言:javascript
复制
>>> import matplotlib.pyplot as plt
>>> plt.style.use('presentation')
  • 组合类型

当然,也可以组合使用多个类型。因此,你可以将图形的不同部分放到不同的文件中,从而进行自定义设置。

代码语言:javascript
复制
>>> import matplotlib.pyplot as plt
>>> plt.style.use(['dark_background', 'presentation'])

注意:靠后的类型会覆盖之前的类型定义的相同属性。

  • 临时类型

如果你只是想对某一部分代码块使用某一类型,而不影响全局类型。style 包提供了 context 管理器(上下文管理器)将指定类型应用于指定区域。以下语句3-4行仅作用于部分代码,其余代码仍使用默认类型:

代码语言:javascript
复制
>>> import numpy as np
>>> import matplotlib.pyplot as plt

>>> with plt.style.context(('dark_background')):
>>>     plt.plot(np.sin(np.linspace(0, 2 * np.pi)), 'r-o')

>>> # 其余部分使用默认类型

>>> plt.show()

matplotlib rcParams

  • rc 动态设置

在 python 脚本或交互式shell中,你可以随时改变默认 rc 设置。所有的 rc 设置都被存储在 matplotlib.rcParams 中,这是一个全局变量。可以直接改变rcParams 值:

代码语言:javascript
复制
import matplotlib as mpl
mpl.rcParams['lines.linewidth'] = 2
mpl.rcParams['lines.color'] = 'r'

除此之外,matplotlib 提供了一系列函数来改变 rc 设置,比如: matplotlib.rc() 函数,可以一次传入多个关键词参数来改变默认类型设置。比如:

代码语言:javascript
复制
import matplotlib as mpl
mpl.rc('lines', linewidth=2, color='r')

matplotlib.rcdefaults() 命令可以恢复默认设置。

  • matplotlibrc 文件

matplotlib 使用 matplotlibrc 配置文件控制多种属性。几乎可以控制每一个属性,比如:figure 大小和 dpi,线宽,颜色和线类型,axes,axis 及网格属性,文本及字体属性等。

matplotlib 会按照以下顺序寻找 matplotlibrc 文件:

  1. 当前工作目录。通常只应用于当前目录下的操作,不影响其他目录下的操作
  2. $MATPLOTLIBRC/matplotlibrc
  3. 寻找用户指定的路径(依赖于系统) 1) Linux 和 FressBSD 中,在 .config/matplotlib/matplotlibrc 或 $XDG_CONFIG_HOME/matplotlib/matplotlibrc 2) 其他系统中在 .matplotlib/matplotlibrc
  4. INSTALL/matplotlib/mpl-data/matplotlibrc ,INSTALL 表示安装目录。每次安装时都会被覆盖。因此,如果想保存的话,最好将其放到用户指定目录下。

当然,你也可以查看当前使用的类型表是那个路径下的:

代码语言:javascript
复制
>>> import matplotlib
>>> matplotlib.matplotlib_fname()
'/home/foo/.config/matplotlib/matplotlibrc'

目前,很多基于 matplotlib 的绘图包,都进行了类型的自定义。比如:prettyplotlib 对大量的默认设置进行了更改[注1]

可以去官网感受一下。

注1:http://blog.olgabotvinnik.com/prettyplotlib/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-06-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 气象杂货铺 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档