2015-09-10 44 views
6

Tôi đang chạy Pandas 0.16.2 và Matplotlib 1.4.3. Tôi có vấn đề này màu trung bình của boxplot tạo ra bởi các mã sau:gấu trúc - các vấn đề về cài đặt màu sắc trung bình hộp số

df = pd.DataFrame(np.random.rand(10, 5), columns=['A', 'B', 'C', 'D', 'E']) 

fig, ax = plt.subplots() 

medianprops = dict(linestyle='-', linewidth=2, color='blue') 

bp = df.boxplot(medianprops=medianprops) 

plt.show() 

Đó trả:

enter image description here

Dường như các thiết lập color không được đọc. Chỉ thay đổi các thiết lập của linestyle và linewidth cốt truyện phản ứng chính xác.

medianprops = dict(linestyle='-.', linewidth=5, color='blue') 

enter image description here

Bất cứ ai cũng có thể tái tạo nó?

Trả lời

0

Thực hiện giải pháp sau đây hoạt động tốt, trả lại một dict từ lệnh boxplot:

df = pd.DataFrame(np.random.rand(10, 5), columns=['A', 'B', 'C', 'D', 'E']) 

fig, ax = plt.subplots() 

bp = df.boxplot(return_type='dict') 

và sau đó gán trực tiếp màu sắc và độ rộng đường thẳng đến trung vị với:

[[item.set_color('r') for item in bp[key]['medians']] for key in bp.keys()] 
[[item.set_linewidth(0.8) for item in bp[key]['medians']] for key in bp.keys()] 
5

Nhìn vào mã cho DataFrame.boxplot() có một số mã đặc biệt để xử lý màu của các phần tử khác nhau thay thế cho kws được chuyển đến số boxplot của matplotlib. Về lý thuyết, dường như có một cách để vượt qua đối số color= chứa từ điển có các khóa là 'boxes', 'whiskers', 'medians', 'caps' nhưng tôi không thể làm cho nó hoạt động khi gọi trực tiếp boxplot().

Tuy nhiên, điều này dường như làm việc:

df.plot(kind='box', color={'medians': 'blue'}, 
     medianprops={'linestyle': '--', 'linewidth': 5}) 

thấy Pandas Boxplot Examples

+1

Cảm ơn, nhưng với mục đích của tôi trong việc vẽ sơ đồ khối đa điểm, tôi cần hàm boxplot (với cột 'by') thay vì phiên bản loại = 'hộp'. –

+0

Trên thực tế sử dụng [this] (http://stackoverflow.com/a/28103385/2699288) trả lời nó hoạt động! –

+0

Không hoạt động với pd 0,22 nữa :( –

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