2017-06-18 11 views
6

chcę wykreślić ułożone obszary o Pythonie i dowiedzieć Funkcja Pandy:Usuń antyaliasingu dla pand plot.area

df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd']) 
df.plot.area(); 

Jednak wynik jest dziwnie antyaliasing, zmieszanie ze sobą kolory, jak Pokazane na tych działkach 2: Example of plot.area

Zoom of plot.area

Ten sam problem pojawia się w przykładzie opisanym w documentation.

Czy wiesz, jak usunąć to wygładzanie? (Lub inny sposób na uzyskanie czystego wyniku dla ułożonych w stos reprezentacji wykresów liniowych.)

Odpowiedz

2

Korzystanie działka matplotlib stos działa dobrze

fig, ax = plt.subplots() 
df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd']) 
ax.stackplot(df.index, df.values.T) 

enter image description here

Od Działka jest stackplot, jedyną różnicę byłaby linewidth obszarów, które można ustawić na zero.

df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd']) 
df.plot.area(linewidth=0) 

enter image description here

szarawe pozostałe linie są następnie rzeczywiście wywołane przez wygładzanie krawędzi. Można to wyłączyć w działce matplotlib

fig, ax = plt.subplots() 
ax.stackplot(df.index, df.values.T, antialiased=False) 

Wynik jednak nie mogą być atrakcyjne wizualnie:

enter image description here

+0

Zobacz zaktualizowaną odpowiedź w celu usunięcia szarych linii. – ImportanceOfBeingErnest

1

Wygląda na to, że istnieją dwie granice.
Spróbuj szerokość linii zerowej:

df.plot.area(lw=0); 

enter image description here

+0

Dziękuję za odpowiedź, to jest o wiele lepiej z tej opcji! Aby przejść dalej, czy wiesz, jak usunąć subtelne szare linie pozostające między ułożonymi w stos obszarami? – ahstat