2014-11-21 16 views
5

Mam dwie boxplotesWykreślić wiele boxplot na jednym wykresie w pand lub matplotlib?

a1=a[['kCH4_sync','week_days']] 
a1.boxplot(by = 'week_days', meanline=True, showmeans=True, showcaps=True, showbox=True,    
       showfliers=False) 
a2=a[['CH4_sync','week_days']] 
a2.boxplot(by = 'week_days', meanline=True, showmeans=True, showcaps=True, showbox=True,  
       showfliers=False) 

Ale chcę, aby umieścić je na jednym wykresie, aby je porównać. Czy masz jakieś rady, aby rozwiązać ten problem? Dzięki!

Odpowiedz

5

Użyj return_type='axes', aby uzyskać a1.boxplot, aby zwrócić obiekt matplotlib Axes. Następnie należy przekazać te osie do drugiego połączenia do boxplot, używając ax=ax. Spowoduje to, że oba pola będą rysowane na tych samych osiach.

a1=a[['kCH4_sync','week_days']] 
ax = a1.boxplot(by='week_days', meanline=True, showmeans=True, showcaps=True, 
       showbox=True, showfliers=False, return_type='axes') 
a2 = a[['CH4_sync','week_days']] 
a2.boxplot(by='week_days', meanline=True, showmeans=True, showcaps=True, 
      showbox=True, showfliers=False, ax=ax) 
0

Aby wykreślić wiele boxplots na jednej matplotlib wykresie można przekazać listę tablic danych do wykresu pudełkowego, jak w:

import nump as np 
import matplotlib.pyplot as plt 

x1 = 10*np.random.random(100) 
x = 10*np.random.exponential(0.5, 100) 
x = 10*np.random.normal(0, 0.4, 100) 
plt.boxplot ([x1, x2, x3]) 

Tylko że ja nie jestem pewien jest, jeśli chcesz, aby każdy wykres typu boxplot mieć inny kolor itp.

Powiązane problemy