2015-03-06 31 views
9

Tôi đã tự hỏi nếu có ai có một vấn đề với tờ bướm hộp Matplotlib không hiển thị?Matplotlib hộp tờ rơi tờ không hiển thị

Tôi nghĩa là sao chép-dán ví dụ này đây vào một kịch bản python: http://blog.bharatbhole.com/creating-boxplots-with-matplotlib/

... nhưng tờ quảng cáo âm mưu hộp (outliers) không hiển thị. Có ai biết tại sao tôi có thể không nhìn thấy họ? Xin lỗi nếu đây là một câu hỏi ngớ ngẩn, nhưng tôi không thể cho cuộc sống của tôi tìm ra lý do tại sao nó không hoạt động.

## Create data 
np.random.seed(10) 
collectn_1 = np.random.normal(100, 10, 200) 
collectn_2 = np.random.normal(80, 30, 200) 
collectn_3 = np.random.normal(90, 20, 200) 
collectn_4 = np.random.normal(70, 25, 200) 

## combine these different collections into a list  
data_to_plot = [collectn_1, collectn_2, collectn_3, collectn_4] 

# Create a figure instance 
fig = plt.figure(1, figsize=(9, 6)) 

# Create an axes instance 
ax = fig.add_subplot(111) 

# Create the boxplot 
bp = ax.boxplot(data_to_plot) 

Tôi cũng đã thử thêm showfliers=True vào dòng cuối cùng của tập lệnh đó nhưng vẫn không hoạt động.

Đây là những gì tôi nhận được như một đầu ra:

enter image description here

+0

tôi sao chép bản gốc bằng cách sao chép-dán mã mà. Bạn có thứ gì khác được tải không? Kiểu chữ/màu nền/đơn vị nền đều có vẻ không chuẩn. – Tom

+0

Tôi đang sử dụng một máy tính xách tay iPython ... Tôi nên đề cập đến nó. Đó có thể là lý do tại sao. Bạn có biết cách đặt định dạng trở lại cài đặt Matplotlib mặc định không? –

Trả lời

2

Bạn không thể thấy tờ quảng cáo nếu điểm đánh dấu tờ rơi đã được thiết lập để None. Các page you linked to có một vòng lặp for flier in bp['fliers']:, thiết lập phi công đánh dấu phong cách, màu sắc và alpha:

import numpy as np 
import matplotlib.pyplot as plt 

np.random.seed(10) 
collectn_1 = np.random.normal(100, 10, 200) 
collectn_2 = np.random.normal(80, 30, 200) 
collectn_3 = np.random.normal(90, 20, 200) 
collectn_4 = np.random.normal(70, 25, 200) 

## combine these different collections into a list  
data_to_plot = [collectn_1, collectn_2, collectn_3, collectn_4] 

# Create a figure instance 
fig = plt.figure(1, figsize=(9, 6)) 

# Create an axes instance 
ax = fig.add_subplot(111) 

# Create the boxplot 
bp = ax.boxplot(data_to_plot, showfliers=True) 

for flier in bp['fliers']: 
    flier.set(marker='o', color='#e7298a', alpha=0.5) 

plt.show() 

mang

enter image description here

+0

Thật kỳ lạ, tôi thấy các ngoại lệ khi tôi chạy mã OP, nhưng không phải khi chạy mã của bạn. Bạn có nghĩa là cũng có 'marker = None'? Thay đổi nó thành 'marker = 'o'' tạo biểu đồ của bạn (đối với tôi). – jedwards

+1

@jedwards: Cảm ơn bạn đã trưởng thành. Tôi đã sao chép mã bằng cài đặt 'đánh dấu 'sai. – unutbu

+0

Hm. Vâng, tôi không nhận được một âm mưu như thế. Tôi nghĩ rằng đó là bởi vì máy tính xách tay iPython tôi đang sử dụng có một định dạng lạ mà tôi không thể thoát khỏi. Có cách nào dễ dàng để có được các giá trị flier (outlier)? Tôi đã thử tìm trong 'bp [' fliers '] ', nhưng tôi không thể tìm ra cách để trích xuất các giá trị từ nó. Miễn là tôi có các giá trị, tôi nghĩ rằng tôi có thể vẽ chúng trên cốt truyện của tôi. –

20

Từ giao diện của âm mưu của bạn, có vẻ như bạn đã nhập các module seaborn . Có một số issue với các ô cửa sổ kiểu chữ matplotlib không hiển thị khi nhập vào bẹ biển, ngay cả khi các tờ bướm được kích hoạt rõ ràng.Mã của bạn dường như làm việc tốt khi sanh ở biển không được nhập khẩu:

Boxplot with fliers, no seaborn

Khi sanh ở biển được nhập khẩu, bạn có thể làm như sau:

Giải pháp 1:

Giả sử bạn đã nhập seaborn như thế này:

import seaborn as sns

bạn có thể sử dụng chức năng boxplot sanh ở biển:

sns.boxplot(data_to_plot, ax=ax)

kết quả là:

Seaborn boxplot with fliers

Giải pháp 2:

Trong trường hợp bạn muốn tiếp tục sử dụng các chức năng matplotlib boxplot (từ Automatic (whisker-sensitive) ylim in boxplots):

ax.boxplot(data_to_plot, sym='k.')

kết quả là:

Matplotlib boxplot with fliers

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