376 Stimmen

Wie ändert man die Hintergrundfarbe des Plots?

Ich mache ein Streudiagramm in Matplotlib und muss den Hintergrund des tatsächlichen Plots auf schwarz ändern. Ich weiß, wie man die Gesichtsfarbe des Plots mit ändern kann:

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

enter image description here

Mein Problem ist, dass sich dadurch die Farbe des Raums um das Grundstück herum ändert. Wie ändere ich die tatsächliche Hintergrundfarbe des Plots?

373voto

Nick T Punkte 23882

Verwenden Sie die set_facecolor(color) Methode der axes Objekt , die Sie auf eine der folgenden Arten erstellt haben:

  • Sie haben eine Figur und eine Achse/es zusammen erstellt

    fig, ax = plt.subplots(nrows=1, ncols=1)
  • Sie haben eine Figur erstellt, dann später eine Achse/es

    fig = plt.figure()
    ax = fig.add_subplot(1, 1, 1) # nrows, ncols, index
  • Sie haben die zustandsbehaftete API verwendet (wenn Sie etwas mehr als ein paar Zeilen machen und insbesondere Wenn Sie mehrere Diagramme haben, machen die obigen objektorientierten Methoden das Leben einfacher, weil Sie auf bestimmte Zahlen verweisen, auf bestimmten Achsen zeichnen und entweder) anpassen können

    plt.plot(...)
    ax = plt.gca()

Dann können Sie set_facecolor :

ax.set_facecolor('xkcd:salmon')
ax.set_facecolor((1.0, 0.47, 0.42))

example plot with pink background on the axes

Zur Auffrischung dessen, was Farben sein können:

matplotlib.colors

Matplotlib erkennt die folgenden Formate zur Angabe einer Farbe:

  • ein RGB- oder RGBA-Tupel von Float-Werten in [0, 1] (z.B., (0.1, 0.2, 0.5) o (0.1, 0.2, 0.5, 0.3) );
  • eine hexadezimale RGB- oder RGBA-Zeichenkette (z. B., '#0F0F0F' o '#0F0F0F0F' );
  • eine String-Darstellung eines Float-Wertes in [0, 1] inklusive für Graustufen (z.B., '0.5' );
  • einer von {'b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'} ;
  • ein X11/CSS4-Farbname;
  • einen Namen aus der xkcd-Farbübersicht mit vorangestelltem 'xkcd:' (z.B., 'xkcd:sky blue' );
  • einer von {'tab:blue', 'tab:orange', 'tab:green', 'tab:red', 'tab:purple', 'tab:brown', 'tab:pink', 'tab:gray', 'tab:olive', 'tab:cyan'} die Tableau-Farben aus der kategorischen Palette "T10" (dem Standardfarbzyklus) sind;
  • eine "CN"-Farbspezifikation, d. h. "C" gefolgt von einer einzelnen Ziffer, die einen Index für den Standard-Eigenschaftszyklus darstellt ( matplotlib.rcParams['axes.prop_cycle'] ); die Indizierung erfolgt zum Zeitpunkt der Künstlererstellung und ist standardmäßig schwarz, wenn der Zyklus keine Farbe enthält.

Bei allen Zeichenkettenangaben von Farbe außer "CN" wird nicht zwischen Groß- und Kleinschreibung unterschieden.

109voto

BurlyPaulson Punkte 1049

Eine Methode besteht darin, die Standardfarbe für den Achsenhintergrund manuell in Ihrem Skript festzulegen (siehe Matplotlib anpassen ) :

import matplotlib.pyplot as plt
plt.rcParams['axes.facecolor'] = 'black'

Dies steht im Gegensatz zu Nick T's Methode, die die Hintergrundfarbe für eine bestimmte axes Objekt. Das Zurücksetzen der Standardeinstellungen ist nützlich, wenn Sie mehrere verschiedene Plots mit ähnlichen Stilen erstellen und nicht ständig die verschiedenen Stile ändern wollen. axes Objekte.

Anmerkung: Das Äquivalent für

fig = plt.figure()
fig.patch.set_facecolor('black')

von Ihrer Frage ist:

plt.rcParams['figure.facecolor'] = 'black'

44voto

So etwas wie das hier? Verwenden Sie die axisbg Schlüsselwort zu 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')

(Zugegeben, es handelt sich nicht um ein Streudiagramm und nicht um einen schwarzen Hintergrund).

enter image description here

34voto

Leigh Punkte 496

Einfachere Antwort:

ax = plt.axes()
ax.set_facecolor('silver')

21voto

Mathias711 Punkte 6502

Wenn Sie bereits über axes Objekt, genau wie in Nick T Antwort können Sie auch verwenden

 ax.patch.set_facecolor('black')

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X