【问题标题】:set IPython Notebook inline plots background not transparent设置 IPython Notebook 内联绘图背景不透明
【发布时间】:2015-06-16 17:57:01
【问题描述】:

在 IPython Notebook 3 中,当我使用 Inline matplotlib 后端时,浏览器中的 png 图形具有透明背景。

如何将其设置为白色?

小例子:

%matplotlib inline
import matplotlib.pyplot as plt
plt.plot([1,2])

右键保存图片,图片有透明背景,我希望它是白色的。

更新 尝试在matplotlibrc 中设置figure.facecolor,但它仍然显示透明的png:

import matplotlib
print("facecolor before:")
print(matplotlib.rcParams["figure.facecolor"])
%matplotlib inline
import matplotlib.pyplot as plt
plt.plot([1,2])
print("facecolor after:")
print(matplotlib.rcParams["figure.facecolor"])

此代码作为输出给出:

facecolor before:
1.0
facecolor after:
(1, 1, 1, 0)

【问题讨论】:

  • 你应该改用%matplotlib notebook
  • 感谢@tcaswell,不知道这个!但是我真的更喜欢使用inline 后端。它看起来更轻巧。
  • 是的,但它不是交互式的(这至少是 mpl 功能的一半)。
  • 以及硬编码到 IPython 中的透明背景添加到 github.com/ipython/ipython/pull/6064 新问题报告 github.com/ipython/ipython/issues/7964
  • 感谢@tcaswell 找到这个

标签: python matplotlib ipython-notebook


【解决方案1】:

假设透明区域是斧头(子图)周围的所有区域,您可以试试这个:

%matplotlib inline
import matplotlib.pyplot as plt
fig, ax = plt.subplots(facecolor='w')
ax.plot([1,2])

如果您想在图形中永久使用白色背景,您需要修改您的 matplotlibrc 文件(位于您的主文件夹中 .matplotlib\ 下)更改这些参数:

figure.facecolor = 1

但是您始终可以通过传递facecolor:以您想要的任何背景自动保存您的图形(与创建图形时的背景无关):

fig.savefig('filename.png', facecolor='w', transparent=False)

【讨论】:

  • 谢谢,subplots 工作正常。但是它不使用matplotlibrc。请参阅问题中的更新。
  • 很高兴听到至少有一种方法可以解决问题。通过传递fc='w' 创建图形时,您还可以使用facecolor 的快捷方式。仍然好奇为什么你更喜欢鼠标右键点击fig.savefig()...
  • 笔记本在另一台机器上运行,所以savefig不方便。
  • 您也可以使用 matplotlib.rcParams 字典在代码中执行此操作。不过,奇怪的是,rcParams['figure.facecolor'] = 1 没有 起作用。必须是rcParams['figure.facecolor'] = 'w'
  • plt.rc('figure', facecolor='w') 为我工作。谢谢!
【解决方案2】:

另一个选项,而不是设置 facecolor,是使用 seaborn 包。

只要运行:

import seaborn as sns

它会自动设置绘图背景,并为 matplotlib 提供更好的默认颜色。

【讨论】:

  • seaborn 0.7 版之前都是这种情况,但现在已经不是这种情况了。目前您需要添加sns.set() 才能达到相同的效果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-17
  • 2018-12-25
  • 2016-10-09
  • 1970-01-01
相关资源
最近更新 更多