322

matplotlib で散布図を作成しており、実際のプロットの背景を黒に変更する必要があります。次を使用してプロットの面の色を変更する方法を知っています。

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

ここに画像の説明を入力

私の問題は、これがプロットの周りのスペースの色を変えることです。プロットの実際の背景色を変更するにはどうすればよいですか?

4

8 に答える 8

314

次のいずれかの方法で作成した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」以外のすべての色の文字列指定では、大文字と小文字が区別されません。

于 2014-05-14T04:05:02.657 に答える
77

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'
于 2016-11-02T01:13:56.243 に答える
42

このようなもの?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')

(確かに、散布図ではなく、黒い背景でもありません。)

ここに画像の説明を入力

于 2012-12-30T07:26:32.003 に答える
21

Nick Tの answer のaxesように、すでにオブジェクトがある場合は、使用することもできます

 ax.patch.set_facecolor('black')
于 2014-05-28T09:33:57.530 に答える
17

最も簡単なのは、プロットを作成するときに色を指定することです。

fig1 = plt.figure(facecolor=(1, 1, 1))

また

fig1, (ax1, ax2) = plt.subplots(nrows=1, ncols=2, facecolor=(1, 1, 1))
于 2019-05-03T19:03:37.317 に答える