2014-11-21 16 views
5

Tôi có một hai boxplotesLô nhiều ô trong một đồ thị trong gấu trúc hoặc 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) 

Nhưng tôi muốn đặt chúng trong một biểu đồ để so sánh chúng. Bạn có lời khuyên nào để giải quyết vấn đề này không? Cảm ơn!

Trả lời

5

Sử dụng return_type='axes' để nhận a1.boxplot để trả về đối tượng matplotlib Axes. Sau đó, chuyển các trục đó đến cuộc gọi thứ hai tới boxplot bằng cách sử dụng ax=ax. Điều này sẽ khiến cả hai ô được vẽ trên cùng một trục.

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

Để vẽ nhiều boxplots trên một đồ thị matplotlib bạn có thể vượt qua một danh sách các mảng dữ liệu để boxplot, như trong:

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]) 

Các chỉ nghĩ tôi không chắc chắn là nếu bạn muốn mỗi boxplot để có màu sắc khác nhau, v.v.

Các vấn đề liên quan