matplotlib で散布図を作成しており、実際のプロットの背景を黒に変更する必要があります。次を使用してプロットの面の色を変更する方法を知っています。
fig = plt.figure()
fig.patch.set_facecolor('xkcd:mint green')
私の問題は、これがプロットの周りのスペースの色を変えることです。プロットの実際の背景色を変更するにはどうすればよいですか?
matplotlib で散布図を作成しており、実際のプロットの背景を黒に変更する必要があります。次を使用してプロットの面の色を変更する方法を知っています。
fig = plt.figure()
fig.patch.set_facecolor('xkcd:mint green')
私の問題は、これがプロットの周りのスペースの色を変えることです。プロットの実際の背景色を変更するにはどうすればよいですか?
次のいずれかの方法で作成したobjectのset_facecolor(color)
メソッドをaxes
使用します。
図形と軸を一緒に作成しました
fig, ax = plt.subplots(nrows=1, ncols=1)
Figure を作成し、次に axis/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 は、色を指定するために次の形式を認識します。
- float 値の 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]
グレー レベルを含む float 値の文字列表現(例:'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 の色です。- 「CN」カラー仕様。つまり、「C」の後に 1 桁の数字が続きます。これは、デフォルトのプロパティ サイクル (
matplotlib.rcParams['axes.prop_cycle']
) へのインデックスです。インデックス作成はアーティストの作成時に行われ、サイクルに色が含まれていない場合はデフォルトで黒になります。「CN」以外のすべての色の文字列指定では、大文字と小文字が区別されません。
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')
(確かに、散布図ではなく、黒い背景でもありません。)
Nick Tの answer のaxes
ように、すでにオブジェクトがある場合は、使用することもできます
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))