簡體   English   中英

如何更改繪圖背景顏色?

[英]How to change plot background color?

我正在 matplotlib 中制作散點圖,需要將實際繪圖的背景更改為黑色。 我知道如何使用以下方法更改繪圖的面部顏色:

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

在此處輸入圖像描述

我的問題是這會改變情節周圍空間的顏色。 如何更改繪圖的實際背景顏色?

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

我認為這可能對某些人有用:

如果要更改圍繞圖形的背景顏色,可以使用以下命令:

fig.patch.set_facecolor('white')

所以代替這個:

具有透明背景的圖像

你得到這個:

在此處輸入圖像描述

顯然你可以設置任何你想要的顏色。

PS 如果您不小心看不到這兩個圖之間的任何區別,請嘗試使用暗模式查看 StackOverflow。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM