私はmatplotlibで散布図を作成しており、実際のプロットの背景を黒に変更する必要があります。プロットの面の色を変更する方法を知っています:
fig = plt.figure()
fig.patch.set_facecolor('xkcd:mint green')
私の問題は、これがプロットの周りのスペースの色を変えることです。プロットの実際の背景色を変更するにはどうすればよいですか?
私はmatplotlibで散布図を作成しており、実際のプロットの背景を黒に変更する必要があります。プロットの面の色を変更する方法を知っています:
fig = plt.figure()
fig.patch.set_facecolor('xkcd:mint green')
私の問題は、これがプロットの周りのスペースの色を変えることです。プロットの実際の背景色を変更するにはどうすればよいですか?
回答:
次のいずれかの方法で作成し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)
);- 16進数のRGBまたはRGBA文字列(例:
'#0F0F0F'
または'#0F0F0F0F'
);[0, 1]
グレイレベルを含む浮動小数点値の文字列表現(例:)'0.5'
;- のいずれか
{'b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'}
;- X11 / CSS4カラー名。
- xkcdカラー調査からの名前。接頭辞付き
'xkcd:'
(例:)'xkcd:sky blue'
;- その1つは
{'tab:blue', 'tab:orange', 'tab:green', 'tab:red', 'tab:purple', 'tab:brown', 'tab:pink', 'tab:gray', 'tab:olive', 'tab:cyan'}
、「T10」カテゴリカルパレット(デフォルトのカラーサイクル)のTableau Colorです。- 「CN」カラースペック、つまり「C」とそれに続く1桁の数字。これは、デフォルトのプロパティサイクル(
matplotlib.rcParams['axes.prop_cycle']
)へのインデックスです。インデックス作成はアーティストの作成時に行われ、サイクルに色が含まれていない場合はデフォルトで黒になります。「CN」以外のすべての色の文字列指定では、大文字と小文字が区別されません。
MethodNotFound
1つの方法は、スクリプト内で軸の背景色のデフォルトを手動で設定することです(matplotlibのカスタマイズを参照)。
import matplotlib.pyplot as plt
plt.rcParams['axes.facecolor'] = 'black'
これは、特定のaxes
オブジェクトの背景色を変更するNick Tの方法とは対照的です。デフォルトをリセットすることは、同じようなスタイルで複数の異なるプロットを作成していて、異なる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')
Windowsを使用して、プロットコマンドの前に成功しました。
axis_bg
axis_bgcolor
は、matplotlib 2.0.0で非推奨になり、matplotlib 2.2.0で削除されました
あなたが既に持っている場合axes
だけのように、オブジェクトをニックTさんの答え、あなたが使用することもできます
ax.patch.set_facecolor('black')
他の回答で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の間のどこかで、適切な機能が切り替えられました。
ax.patch.set_facecolor("red")
。推奨される方法でのmatplotlib 2.0のナットはax.set_facecolor
です。
ax.patch.set_facecolor('black')
(ax
Axesインスタンスはどこにあるか)だけを使用できます。fig.patch
は、Figureの背景でax.patch
、Axesの背景です。