如何永久设置Matplotlib pyplot风格?

4

我喜欢matplotlib中可用的ggplot样式。因此,当我处于交互式会话中时,我通常执行以下操作:

import matplotlib.pyplot as plt
plt.style.use('ggplot')

这样可以产生非常好的样式。有没有一种简单的方法使这个设置持久化,这样我就不需要每次启动Python时都输入上述命令?


3
编辑 matplotlibrc 文件:https://matplotlib.org/users/customizing.html - pcu
我在那里看不到“样式”的设置。如果您这样做,我认为您需要手动指定所有单独的设置。 - SMeznaric
这里讨论的选项可能不是唯一的,具体取决于您所说的“我在交互会话中”的含义。例如,某些集成开发环境(IDE)允许定义启动命令,类似于 import matplotlib; matplotlib.style.use("ggplot") - ImportanceOfBeingErnest
那是一个有趣的想法@ImportanceOfBeingErnest。 - SMeznaric
4个回答

3
您可以在安装目录中的 matplotlibrc格式文件 中指定所需的样式。
编辑:在github上我们找到
# from http://www.huyng.com/posts/sane-color-scheme-for-matplotlib/

patch.linewidth: 0.5
patch.facecolor: 348ABD  # blue
patch.edgecolor: EEEEEE
patch.antialiased: True

font.size: 10.0

axes.facecolor: E5E5E5
axes.edgecolor: white
axes.linewidth: 1
axes.grid: True
axes.titlesize: x-large
axes.labelsize: large
axes.labelcolor: 555555
axes.axisbelow: True       # grid/ticks are below elements (e.g., lines, text)

axes.prop_cycle: cycler('color', ['E24A33', '348ABD', '988ED5', '777777',     'FBC15E', '8EBA42', 'FFB5B8'])
               # E24A33 : red
               # 348ABD : blue
               # 988ED5 : purple
               # 777777 : gray
               # FBC15E : yellow
               # 8EBA42 : green
               # FFB5B8 : pink

xtick.color: 555555
xtick.direction: out

ytick.color: 555555
ytick.direction: out

grid.color: white
grid.linestyle: -    # solid line

figure.facecolor: white
figure.edgecolor: 0.50

我在那里看不到“样式”的设置。如果您这样做,我认为您需要手动指定所有单独的设置。 - SMeznaric
2
https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/mpl-data/stylelib/ggplot.mplstyle - Roelant

1

你可以添加

use('ggplot')

.../lib/python2.7/site-packages/matplotlib-2.0.0-py2.7-linux-x86_64.egg/matplotlib/style/__init__.py

您的具体路径可能略有不同。


0

我希望能够更详细地扩展@ImportanceOfBeingErnest的答案。

如何永久更改默认的Matplotlib样式

这是一个三步过程,我们需要 1. 找到matplotlibrc文件的位置 2. 将该文件复制到另一个位置并 3. 添加特定样式的matplotlibrc参数。让我们更详细地了解每个步骤。

  1. 使用以下命令找到计算机中默认的matplotlibrc文件所在位置
import matplotlib
print(matplotlib.matplotlib_fname())
  1. 使用以下命令将默认的 matplotlibrc 文件复制到目录 $HOME/.config/matplotlib/matplotlibrc 中:
cp path_matplotlibrc $HOME/.config/matplotlib/matplotlibrc`

其中,path_matplotlibrc是matplotlibrc所在的路径,即path_matplotlibrc是第一步的结果。

  1. 从样式文件中复制代码并将其粘贴到“$HOME/.config/matplotlib/matplotlibrc”文件中。

进入目录matplotlib/lib/matplotlib/mpl-data/stylelib(或者直接在matplotlib的github 这里找到相同的位置)。从该目录中的一个.mplstyle文件中复制代码。此代码将是一个matplotlibrc参数列表,对应于由文件名指示的特定样式。例如,访问github,您可以只复制fivethirtyeight样式的代码,它看起来像这样。

enter image description here

将具有该样式的matplotlibrc参数的代码粘贴到“$HOME/.config/matplotlib/matplotlibrc”文件的底部。因此,在此示例中,我们将在新文件的末尾粘贴上述所示的fivethirtyeight样式matplotlibrc参数代码。

就这样,你完成了。只需找出matplotlibrc文件最初的位置,将该文件复制到另一个位置,并添加特定样式的matplotlibrc参数即可。非常简单。

为什么会有效?

matplotlib文档here解释:

Matplotlib使用matplotlibrc配置文件自定义各种属性,我们称之为“rc设置”或“rc参数”。您可以控制Matplotlib中几乎每个属性的默认值:图形大小和DPI、线宽、颜色和样式、轴、轴和网格属性、文本和字体属性等等。在启动时读取matplotlibrc以配置Matplotlib...当使用样式表并指定了style.use('/.mplstyle')时,样式表中指定的设置优先于matplotlibrc文件中的设置。

每种样式实际上都是一组参数和属性,这些参数和属性会覆盖默认的matplotlibrc文件,该文件可以在此处找到。我们可以通过查看目录matplotlib/lib/matplotlib/mpl-data/stylelib(可以在此处的github上找到)来明确地看到这一点,该目录包含每个内置样式的文件。单击目录中的文件,我们可以清楚地看到样式只是matplotlibrc参数列表。(这就是我们上面展示的fivethirtyeightmatplotlibrc参数。)

因此,Matplotlib使用matplotlibrc文件来确定图形的样式。那么将某种样式的matplotlibrc设置粘贴到新文件位置如何覆盖默认的matplotlibrc设置呢?

Matplotlib按以下顺序在四个位置查找matplotlibrc文件:

  1. 在当前工作目录中查找名为matplotlibrc的文件是否存在。
  2. 如果是文件,则在$MATPLOTLIBRC中查找,否则在$MATPLOTLIBRC/matplotlibrc中查找。
  3. 在Linux和FreeBSD上,如果您已自定义环境,则会查找.config/matplotlib/matplotlibrc(或$XDG_CONFIG_HOME/matplotlib/matplotlibrc)。在其他平台上,它会查找.matplotlib/matplotlibrc
  4. INSTALL/matplotlib/mpl-data/matplotlibrc,其中INSTALL是您安装matplotlib包的位置。在Linux上可能是/usr/lib/python3.7/site-packages,在Windows上可能是C:\Python37\Lib\site-packages

一旦找到matplotlibrc文件,就不会搜索其他路径。

默认情况下,matplotlibrc只能在第四个位置找到。这意味着我们可以通过在第一、二或三个位置创建新的 matplotlibrc文件来覆盖在位置4中发现的默认设置。按照惯例,应该在可能的最高编号位置创建一个新的 matplotlibrc文件,以便在需要时可以有更多的替换空间。在我刚才给出的说明中,我们在位置3中创建了一个新的 matplotlibrc文件。这就是我们如何覆盖默认的matplotlibrc设置,从而创建了与特定样式对应的新的matplotlibrc设置,并将其用作默认设置。


关于Matplotlib样式的更多信息可以在这里找到。

关于Matplotlib样式

Matplotlib有几种内置样式可供选择。您可以在这里看到每个内置样式将如何改变您的图表外观。要调用特定的样式,请使用命令plt.style.use('stylename'),其中stylename是任意样式名称,要列出所有可用样式,请使用print(plt.style.available)


0

原则上,@Roelants的回答是正确的。在这里稍微详细一些:

  1. 找到您的matplotlibrc文件,如此处所讨论,并备份它。
  2. 找到ggplot.mplstyle(可能与matplotlibrc文件相比位于子文件夹中)。
  3. ggplot.mplstyle的内容替换matplotlibrc文件的内容。

从那时起,默认样式将与由ggplot样式定义的样式相同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接