繁体   English   中英

如何更改绘图背景颜色?

[英]How to change plot background color?

我正在 matplotlib 中制作散点图,需要将实际绘图的背景更改为黑色。 我知道如何使用以下方法更改绘图的面部颜色:

fig = plt.figure()
fig.patch.set_facecolor('xkcd:mint green')

在此处输入图像描述

我的问题是这会改变情节周围空间的颜色。 如何更改绘图的实际背景颜色?

使用axes对象的set_facecolor(color)方法,您已通过以下方式之一创建了该方法:

  • 您一起创建了一个图形和轴/es

     fig, ax = plt.subplots(nrows=1, ncols=1)
  • 您创建了一个图形,然后是轴/es

     fig = plt.figure() ax = fig.add_subplot(1, 1, 1) # nrows, ncols, index
  • 你使用了有状态的 API(如果你做的事情不止几行,特别是如果你有多个绘图,上面的面向对象的方法让生活更轻松,因为你可以参考特定的数字,在某些轴上绘图,并自定义任何一个)

     plt.plot(...) ax = plt.gca()

然后你可以使用set_facecolor

ax.set_facecolor('xkcd:salmon')
ax.set_facecolor((1.0, 0.47, 0.42))

轴上带有粉红色背景的示例图

作为复习可以是什么颜色:

matplotlib.colors

Matplotlib 识别以下格式来指定颜色:

  • [0, 1]中浮点值的 RGB 或 RGBA 元组(例如(0.1, 0.2, 0.5)(0.1, 0.2, 0.5, 0.3) );
  • 十六进制 RGB 或 RGBA 字符串(例如'#0F0F0F''#0F0F0F0F' );
  • [0, 1]中浮点值的字符串表示,包括灰度级(例如, '0.5' );
  • {'b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'}之一;
  • 一个 X11/CSS4 颜色名称;
  • 来自xkcd 颜色调查的名称; 'xkcd:'为前缀(例如'xkcd:sky blue' );
  • {'tab:blue', 'tab:orange', 'tab:green', 'tab:red', 'tab:purple', 'tab:brown', 'tab:pink', 'tab:gray', 'tab:olive', 'tab:cyan'}它们是来自“T10”分类调色板的 Tableau 颜色(这是默认颜色循环);
  • “CN”颜色规范,即“C”后跟一个数字,这是默认属性循环的索引( matplotlib.rcParams['axes.prop_cycle'] ); 索引在艺术家创建时发生,如果循环不包括颜色,则默认为黑色。

除“CN”之外的所有颜色字符串规范都不区分大小写。

一种方法是在脚本中手动设置轴背景颜色的默认值(请参阅自定义 matplotlib ):

import matplotlib.pyplot as plt
plt.rcParams['axes.facecolor'] = 'black'

这与 Nick T 更改特定axes区对象的背景颜色的方法形成对比。 如果您要制作多个具有相似样式的不同绘图并且不想不断更改不同的axes对象,则重置默认值很有用。

注:相当于

fig = plt.figure()
fig.patch.set_facecolor('black')

你的问题是:

plt.rcParams['figure.facecolor'] = 'black'

像这样的东西? 使用axisbg关键字进行subplot

>>> from matplotlib.figure import Figure
>>> from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
>>> figure = Figure()
>>> canvas = FigureCanvas(figure)
>>> axes = figure.add_subplot(1, 1, 1, axisbg='red')
>>> axes.plot([1,2,3])
[<matplotlib.lines.Line2D object at 0x2827e50>]
>>> canvas.print_figure('red-bg.png')

(当然,不是散点图,也不是黑色背景。)

在此处输入图像描述

更简单的答案:

ax = plt.axes()
ax.set_facecolor('silver')

如果您已经有axes对象,就像在Nick T的答案中一样,您也可以使用

 ax.patch.set_facecolor('black')

最简单的事情可能是在创建绘图时提供颜色:

fig1 = plt.figure(facecolor=(1, 1, 1))

或者

fig1, (ax1, ax2) = plt.subplots(nrows=1, ncols=2, facecolor=(1, 1, 1))

其他答案中的一个建议是使用ax.set_axis_bgcolor("red") 然而,这已被弃用,并且不适用于 MatPlotLib >= v2.0。

还有使用ax.patch.set_facecolor("red")的建议(适用于 MatPlotLib v1.5 和 v2.2)。 虽然这很好用,但 v2.0+ 的一个更简单的解决方案是使用

ax.set_facecolor("red")

除了 NickT 的答案之外,您还可以通过将其设置为“无”来删除背景框架,如下所述: https ://stackoverflow.com/a/67126649/8669161

import matplotlib.pyplot as plt
plt.rcParams['axes.facecolor'] = 'none'

我认为这可能对某些人有用:

如果要更改围绕图形的背景颜色,可以使用以下命令:

fig.patch.set_facecolor('white')

所以代替这个:

具有透明背景的图像

你得到这个:

在此处输入图像描述

显然你可以设置任何你想要的颜色。

PS 如果您不小心看不到这两个图之间的任何区别,请尝试使用暗模式查看 StackOverflow。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM