【问题标题】:Transparent Background of Matplotlib PlotMatplotlib 绘图的透明背景
【发布时间】:2020-07-27 11:15:04
【问题描述】:

我将 Matplotlib 和 Seaborn 用于某些绘图目的。我想要具有透明背景而不是黑色背景的图。我的代码是

plt.style.use("dark_background")
plt.figure(figsize=(15,8))
sns.swarmplot(x='type',y='value', data=df, size=3.5, color='r', alpha=0.4)
sns.boxplot(x='type',y='value',data=df)

情节是

现在是否有任何样式或技术可以使我的单元格具有相同的绘图背景颜色,即我的绘图背景是透明的。

谢谢

【问题讨论】:

标签: python matplotlib


【解决方案1】:

如果您只希望图形和轴的整个背景都是透明的,您可以在使用fig.savefig 保存图形时简单地指定 transparent=True。

例如:

import matplotlib.pyplot as plt
fig = plt.figure()
plt.plot(range(10))
fig.savefig('temp.png', transparent=True)

如果您想要更细粒度的控制,您可以简单地为图形和轴背景补丁设置 facecolor 和/或 alpha 值。 (要使补丁完全透明,我们可以将 alpha 设置为 0,或者将 facecolor 设置为 'none'(作为字符串,而不是对象 None!))

例如:

import matplotlib.pyplot as plt
fig = plt.figure()
fig.patch.set_facecolor('blue')
fig.patch.set_alpha(0.7)
ax = fig.add_subplot(111)
ax.plot(range(10))
ax.patch.set_facecolor('red')
ax.patch.set_alpha(0.5)
# If we don't specify the edgecolor and facecolor for the figure when
# saving with savefig, it will override the value we set earlier!
fig.savefig('temp.png', facecolor=fig.get_facecolor(), edgecolor='none')
plt.show()

【讨论】:

  • 如果 OP 想要将他们的图形放置在预先存在的较暗图像上,他们可以简单地降低图形/轴的不透明度,以便浅色图形元素稍微突出 先前存在的图像的较暗部分
  • 不错的答案,我特别感谢关于fig.savefig的评论
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-29
  • 2016-07-19
  • 2020-03-30
  • 1970-01-01
  • 1970-01-01
  • 2020-08-17
相关资源
最近更新 更多