2016-07-03 5 views
8

Ich möchte eine Bar in matplotlib mit weiß als Füllfarbe, rot als Schraffurfarbe und schwarz als Randfarbe zeichnen. Es sieht jedoch so aus, als ob die Kantenfarbe auch die Farbe der Schraffur ändert. Also, ich bin nicht in der Lage, die Farbe von Kanten und Schraffuren zu entkoppeln. Hast du irgendwelche Vorschläge? Danke.Wie entkopple Luke und Kantenfarbe in Matplotlib?

Antwort

10

Plot bar Grundstück zweimal:

import matplotlib.pyplot as plt 
from matplotlib.patches import Ellipse, Polygon 

fig = plt.figure() 
ax1 = fig.add_subplot(111) 
# draw hatch 
ax1.bar(range(1, 5), range(1, 5), color='none', edgecolor='red', hatch="/", lw=1., zorder = 0) 
# draw edge 
ax1.bar(range(1, 5), range(1, 5), color='none', edgecolor='k', zorder=1, lw=2.) 

ax1.set_xticks([1.5, 2.5, 3.5, 4.5]) 
plt.show() 

enter image description here

+0

Vielen Dank! Genau das brauche ich. –

+0

Hast du auch Vorschläge für die Legende? Ich bekomme immer noch rote Schraffur und rote Kanten. –

+0

Der Legende hinzufügen black-edged patch. – Serenity

3

In Matplotlib 2.0 können Sie jetzt configure the hatch colour directly mit rcParams.

Die Farbe und die Breite der Linien in einem Gittermuster durch die rcParams nun konfigurierbar sind hatch.color und hatch.linewidth, mit Ausfällen von schwarzem und 1 Punkt bzw. ... Es gibt keine API Pegelsteuerung der Luke Farbe oder Linienbreite.

Schraffurmuster werden jetzt unabhängig von DPI mit einer konsistenten Dichte gerendert. Früher waren die Zahlen für hohe DPI dichter als die Standardwerte, und die Werte für niedrige DPI wären weniger dicht. Dieses alte Verhalten kann nicht direkt wiederhergestellt werden, aber die Dichte kann durch Wiederholen des Lukenspezifizierers erhöht werden.

+2

konfigurieren, was bedeutet, dass ich nur in einer Farbe pro Diagramm schraffieren kann ... das ist ärgerlich ... – mathause

+1

scheint in Planung für 2.0.1 zu sein https://github.com/matplotlib/matplotlib/issues/7901 – mathause

Verwandte Themen