更改matplotlib绘图的默认背景颜色

15

我正在使用 ipythonmatplotlib。是否可以配置 matplotlib 绘图的默认背景颜色?当前(白色)颜色必须来自某个地方。是否可能将其覆盖为,比如,#CCCCCC

注意:默认情况下,我指的不是给定 ipython 笔记本的默认设置。我指的是对于我的 matplotlib 安装的默认设置。

@Ffisegydd 建议的解决方法有效。但是,在设置了 axes.facecolor : F4EAEA 后,我仍然会在绘图周围看到白色边缘:

enter image description here

我该怎么去掉它们?

更新:

现在我已经在我的 /etc/matplotlibrc 中设置了以下内容,并且每次更改后都重新启动了 ipython 笔记本;

axes.facecolor      : F4EAEA   
figure.facecolor : F4EAEA  
figure.edgecolor : F4EAEA   
savefig.facecolor : F4EAEA    
savefig.edgecolor : F4EAEA    

这个图表看起来和原始截图一样。也就是说,图表周围有一个白色条纹。

更新2:

我正在使用IPython,并且在我的~/.config/ipython/profile_nbserver/static/custom/custom.css中有以下自定义CSS。

div.output_area {
  border-radius: 4px;
  background: #F4EAEA !important;
  border: thin solid #4a4a4a;
}

你能说一下你是怎么绘图的吗?那看起来像是IPython,但它既不像通常的笔记本界面,也不像qtconsole。 - mwaskom
你的问题可能出在你的自定义 CSS 上,而不是 Matplotlib。 - mwaskom
@mwaskom - 图表周围的白边仍然是图表的一部分(即:它们来自于matplotlib - 请注意轴上的数字)。css不会影响图像的呈现方式。 - Martin Vegter
2个回答

17

您需要设置坐标轴图像背景颜色:

f = plt.figure(facecolor=".6")
ax = f.add_subplot(111, axisbg=".6")
ax.plot([0, 1, 2], [1, 0, 2])

在交互式绘图和保存的图像之间还有一个面色(facecolor)的区别;如果您希望结果文件具有统一的背景,则还必须通过 f.savefig 传递 facecolor

您可以使用 rcParams 字典中的以下字段更改默认设置:

import matplotlib as mpl
mpl.rcParams["figure.facecolor"]
mpl.rcParams["axes.facecolor"]
mpl.rcParams["savefig.facecolor"]

请注意,在使用内联后端的IPython笔记本中,这种方法的工作方式有些出乎意料。你看到的下方的图形版本不是由figure参数控制的,而是由savefig参数控制的。


1
谢谢。我现在已经在/etc/matplotlibrc中将所有三个(axes.facecolorfigure.facecolorsavefig.facecolor)设置为F4EAEA。但是我仍然看到白色边缘(如原始截图所示)。 - Martin Vegter
啊,还有一个 edgecolor 参数你可能想要设置。 - mwaskom
axes.edgecolor 参数似乎会影响绘图周围的黑色边框(线)。我想保留那个黑色。这是您屏幕截图上也有的同一条黑线。 - Martin Vegter
我已将以下所有设置为F4EAEA,但仍显示白色边缘:axes.facecolorfigure.facecolorfigure.edgecolorsavefig.facecolorsavefig.edgecolor - Martin Vegter
我已更新我的问题,陈述当前状态。 - Martin Vegter
显示剩余3条评论

13

您可以使用各种方式定制matplotlib

如果您想要在整个计算机上进行自定义,则matplotlib默认使用“matplotlibrc”配置文件。

如果您希望编辑此文件以更改默认的轴面颜色(即背景的技术术语),则需要取消注释并调整此行:

#axes.facecolor : white # axes background color

如果您希望将背景颜色设置为#CCCCCC,则应将该行更改为:

axes.facecolor : CCCCCC # axes background color

N.B. 如果您重新安装matplotlib,这些更改将被覆盖。如示例注释所述,您可以将其保存在“HOME / .matplotlib / matplotlibrc”中以防止此问题。

如果您只是想暂时将其更改为其他颜色,那么只需在脚本顶部添加以下内容即可:

import matplotlib as mpl

mpl.rcParams['axes.facecolor'] = '111111' # Or any suitable colour...

如果你想修改单个matplotlib.axes对象,那么只需使用ax.set_axis_bgcolor('...')


谢谢。我在我的系统上找到了/etc/matplotlibrc文件。然而,无论是axes.facecolor : #cccccc还是axes.facecolor : '#cccccc'都不起作用。 - Martin Vegter
@MartinVegter 这对我有效 axes.facecolor: eeddcc - Diziet Asahi
我刚刚测试了一下,发现和Diziet的结果一样。如果你取消注释并且不使用#符号,它就可以工作了(在OS X Mavericks上测试,将文件放置在~/.matplotlib/matplotlibrc)。 - Ffisegydd
@Ffisegydd - 谢谢,现在可以了。但是还是有白边(我已经在原问题中添加了截图)。 - Martin Vegter
很遗憾,@MartinVegter,我无法复制它。我的IPython笔记本默认有白色背景,因此看起来像这样:链接,只有灰色的轴面和周围都是白色。 - Ffisegydd
如果你正在使用 Python 虚拟环境,就像我一样,你应该在 Python 虚拟环境目录中找到 matplotlibrc。例如:./venv/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc - MikeyE

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