2013-12-12 21 views
7

Staram się, aby linie na moim wykresie kołowym matplotlib były znacznie jaśniejsze. Bo mam tak wiele plasterków, linie są zbyt grube, jak pokazano poniżej:Zmiana właściwości linii w wykresie kołowym matplotlib

enter image description here

czytam this example która sugeruje użycie rcparam tak:

matplotlib.rcParams['text.color'] = 'r' 
matplotlib.rcParams['lines.linewidth'] = 2 

ale chociaż mogę zmienić kolor tekstu, nie zmienia szerokości linii między wycinkami koła. Wierzę, że tak jest, ponieważ plasterki nie są zarządzane obiektami liniowymi, lecz obiektami klinowymi. Czy istnieje sposób na ustawienie stylu i koloru obramowania klina?

Dzięki dużo, Alex

Odpowiedz

11

spróbuj tego:

ax = plt.subplot(111) 
wedges, texts = ax.pie(np.abs(np.random.randn(5))) 

for w in wedges: 
    w.set_linewidth(2) 
    w.set_edgecolor('cyan') 

pie

Dodatkowo, jeśli masz tylko obiekt axes i nie mają bezpośredniego dostępu do klinów tortu na ty może odzyskać kliny od ax.patches:

wedges = [patch for patch in ax.patches if isinstance(patch, matplotlib.patches.Wedge)] 
+0

Prawdopodobnie możesz również przekazać w 'linewidth', gdy nazwiesz' ciasto'. – tacaswell

+0

@tcaswell właśnie wypróbował to na matplotlib '1.3.1', nie działało –

+1

Tak, to jest dziwne/nie w porządku. Większość sygnatur fabuły ma '** kwarg', ale' ciasto' nie. Mogę coś z tym zrobić, jeśli mam dzisiaj czas. – tacaswell

5

Im spóźnienie do tej partii, ale po prostu stwierdziła, że ​​dla wykresów kołowych, zamiast używać:

plt.rcParams['lines.linewidth'] = 2 

można użyć:

plt.rcParams['patch.linewidth'] = 0 

Ponadto, aby zmienić kolor pie liniowy wykres użyj tego:

plt.rcParams['patch.edgecolor'] = 'white' 

zamiast:

plt.rcParams['line.color'] = 'white' 
+0

O wiele bardziej intuicyjne i łatwiejsze niż powyższe dla podstawowych potrzeb, dzięki. – Konrad

Powiązane problemy