[英]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.