问题:如何更改情节背景颜色?
我正在matplotlib中制作散点图,需要将实际图的背景更改为黑色。我知道如何使用以下方法更改情节的脸色:
fig = plt.figure()
fig.patch.set_facecolor('xkcd:mint green')
我的问题是,这会改变情节周围空间的颜色。如何更改绘图的实际背景颜色?
回答 0
使用对象的set_facecolor(color)
方法,axes
该方法是您通过以下方法之一创建的:
您一起创建了图形和轴
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: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”外,所有颜色的字符串规格均不区分大小写。
回答 1
一种方法是在脚本中手动设置轴背景色的默认值(请参阅自定义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'
回答 2
像这样吗 使用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')
(授予的,不是散点图,也不是黑色背景。)
回答 3
如果您已经有了axes
对象,就像Nick T的答案一样,您也可以使用
ax.patch.set_facecolor('black')
回答 4
其他答案中的一个建议是使用ax.set_axis_bgcolor("red")
。但是,此方法已被弃用,并且不适用于MatPlotLib> = v2.0。
还有建议使用ax.patch.set_facecolor("red")
(在MatPlotLib v1.5和v2.2上均可使用)。虽然这很好用,但对于v2.0 +来说,更简单的解决方案是使用
ax.set_facecolor("red")
回答 5
最简单的方法可能是在创建绘图时提供颜色:
fig1 = plt.figure(facecolor=(1, 1, 1))
要么
fig1, (ax1, ax2) = plt.subplots(nrows=1, ncols=2, facecolor=(1, 1, 1))
回答 6
比较简单的答案:
ax = plt.axes()
ax.set_facecolor('silver')
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。