使用您创建的图轴对象中的set_facecolor(color)
方法,可以通过以下任一方式之一创建该对象:
您同时创建了一个图和一个或多个轴
fig, ax = plt.subplots(nrows=1, ncols=1)
你创建了一个图形,然后稍后添加了坐标轴/轴线
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可识别以下格式来指定颜色:
- 由浮点值构成的RGB或RGBA元组,范围在
[0, 1]
内(例如,(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:天蓝色'
);{'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”之外的所有颜色字符串说明都不区分大小写。
MethodNotFound
- Demis一种方法是在脚本内手动设置轴背景色的默认值(请参见自定义 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')
(虽然不是散点图,也不是黑色背景。)
plt.subplot('111', axisbg='black')
成功了。 - heltonbikeraxis_bg
和 axis_bgcolor
在 matplotlib 2.0.0 中已被弃用,并在 matplotlib 2.2.0 中移除。 - RubenLaguna更简单的回答:
ax = plt.axes()
ax.set_facecolor('silver')
最简单的方法可能是在创建绘图时提供颜色:
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")
ax.set_axis_bgcolor("black")
可以在 Python v2.7.14/MPL v1.5.1 上使用,但 ax.set_facecolor()
不行。在 MPL v1.5.1 和 v2.2.0 之间的某个版本中,正确的函数被更改了。 - Demisax.patch.set_facecolor("red")
。但是从 matplotlib 2.0 开始,推荐的方法是 ax.set_facecolor
。 - ImportanceOfBeingErnestimport matplotlib.pyplot as plt
plt.rcParams['axes.facecolor'] = 'none'
ax.patch.set_facecolor('black')
(其中ax
是图轴实例)。fig.patch
是图的背景,而ax.patch
是轴的背景。 - Joe Kington