[英]How to change plot background color?
使用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'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.