ChatGPT解决这个技术问题 Extra ChatGPT

如何更改绘图背景颜色?

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

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

https://i.stack.imgur.com/UN6YB.png

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

仅供参考,除了@Evert 所说的之外,您还可以使用 ax.patch.set_facecolor('black') (其中 ax 是轴实例)。 fig.patch 是图形背景,ax.patch 是轴背景。
mint green 可能是您可以为背景选择的最差颜色。我喜欢它:D

N
Nick T

使用 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))

https://i.stack.imgur.com/2wFc6.png

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

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”之外的所有颜色字符串规范都不区分大小写。


如果有其他常见的生成轴的方法,请告诉我。
看起来这种方法在过去 3 年的某个时间点消失了...... MethodNotFound
@Demis 这种方法是近年来添加的。有关如何在旧版本中执行此操作,请参阅 ImportanceOfBeingEarnest's answer
B
BurlyPaulson

一种方法是在脚本中手动设置轴背景颜色的默认值(请参阅 Customizing 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'

这很有帮助!仅供参考,我刚刚问过Properly reset matplotlib.rcParams dictionary to its original defaults
佚名

像这样的东西?使用 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')

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

https://i.stack.imgur.com/fYiEK.png


在使用 Windows 绘图命令之前,我使用 plt.subplot('111', axisbg='black') 取得了成功。
axis_bg axis_bgcolor 在 matplotlib 2.0.0 中已弃用并在 matplotlib 2.2.0 中删除
p
petezurich

更简单的答案:

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

C
Community

如果您已经有 axes 对象,就像在 Nick T's answer 中一样,您也可以使用

 ax.patch.set_facecolor('black')

F
Flonks

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

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

或者

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

这只会改变窗口背景颜色,而不是实际的绘图颜色
D
Demis

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

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

ax.set_facecolor("红色")


仅供参考,ax.set_axis_bgcolor("black") 适用于 Python v2.7.14/MPL v1.5.1,但 ax.set_facecolor() 不适用。在 MPL v1.5.1 和 v2.2.0 之间的某个地方切换了正确的功能。
@Demis 如果您需要适用于所有版本的解决方案,请使用 ax.patch.set_facecolor("red")。 matplotlib 2.0 中推荐的方法是 ax.set_facecolor
D
Douasb'

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

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

w
waykiki

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

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

fig.patch.set_facecolor('white')

所以代替这个:

https://i.stack.imgur.com/J5uaH.png

你得到这个:

https://i.stack.imgur.com/guOvX.png

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

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