einfärben das Boxplot, müssen Sie zuerst das patch_artist=True
Schlüsselwort verwenden, um es zu sagen, dass die Kästchen Patches und nicht nur Pfade sind. Dann haben Sie zwei Hauptoptionen hier:
- setzen Sie die Farbe über
...props
Schlüsselwort Argument, z.
boxprops=dict(facecolor="red")
. Informationen zu allen Schlüsselwortargumenten finden Sie unter the documentation
- Verwenden Sie die
plt.setp(item, properties)
-Funktionalität, um die Eigenschaften der Kästen, Whisker, Flieger, Mediane, Caps festzulegen.
- erhalten Sie die einzelnen Elemente der Boxen aus dem zurückgegebenen Wörterbuch und verwenden
item.set_<property>(...)
auf ihnen einzeln. Diese Option wird in einer Antwort auf die folgende Frage ausführlich beschrieben: python matplotlib filled boxplots, wo es ermöglicht, die Farbe der einzelnen Boxen separat zu ändern.
Das vollständige Beispiel zeigt die Optionen 1 und 2:
import matplotlib.pyplot as plt
import numpy as np
data = np.random.normal(0.1, size=(100,6))
data[76:79,:] = np.ones((3,6))+0.2
plt.figure(figsize=(4,3))
# option 1, specify props dictionaries
c = "red"
plt.boxplot(data[:,:3], positions=[1,2,3], notch=True, patch_artist=True,
boxprops=dict(facecolor=c, color=c),
capprops=dict(color=c),
whiskerprops=dict(color=c),
flierprops=dict(color=c, markeredgecolor=c),
medianprops=dict(color=c),
)
# option 2, set all colors individually
c2 = "purple"
box1 = plt.boxplot(data[:,::-2]+1, positions=[1.5,2.5,3.5], notch=True, patch_artist=True)
for item in ['boxes', 'whiskers', 'fliers', 'medians', 'caps']:
plt.setp(box1[item], color=c2)
plt.setp(box1["boxes"], facecolor=c2)
plt.setp(box1["fliers"], markeredgecolor=c2)
plt.xlim(0.5,4)
plt.xticks([1,2,3], [1,2,3])
plt.show()
Sie haben die Markierung der Flieger verpasst. ;-) – ImportanceOfBeingErnest
Danke fürs Helfen :-) – user58925