2015-04-29 22 views

risposta

8

Il metodo è sostanzialmente lo stesso di the other SO answer; dividere ogni riga dalla somma della fila:

df = df.divide(df.sum(axis=1), axis=0) 

quindi è possibile chiamare df.plot(kind='area', stacked=True, ...) come al solito.


import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 
np.random.seed(2015) 

y = np.random.randint(5, 50, (10,3)) 
x = np.arange(10) 
df = pd.DataFrame(y, index=x) 

df = df.divide(df.sum(axis=1), axis=0) 
ax = df.plot(kind='area', stacked=True, title='100 % stacked area chart') 

ax.set_ylabel('Percent (%)') 
ax.margins(0, 0) # Set margins to avoid "whitespace" 

plt.show() 

cede

enter image description here

+1

Un'altra possibilità è 'pandas.DataFrame.plot.area()' – Dror