我想知道Matplotlib的盒子情节传单是否有问题?
我将此示例复制粘贴到python脚本中: http://blog.bharatbhole.com/creating-boxplots-with-matplotlib/
...但是盒子图传单(异常值)没有显示。有谁知道为什么我可能不会看到它们?对不起,如果这是一个愚蠢的问题,但我不能为我的生活弄清楚它为什么不起作用。
## 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)
我还尝试将showfliers=True
添加到该脚本的最后一行,但它仍无效。
这是我作为输出得到的:
答案 0 :(得分:32)
从你的情节看,你似乎已经导入了seaborn模块。导入seaborn时,即使显式启用了传单,也会显示issue matplotlib boxplot传单。当未导入seaborn时,您的代码似乎正常工作:
导入seaborn时,您可以执行以下操作:
解决方案1:
假设您已经导入了这样的seaborn:
import seaborn as sns
你可以使用seaborn boxplot功能:
sns.boxplot(data_to_plot, ax=ax)
导致:
解决方案2:
如果您想继续使用matplotlib boxplot函数(来自Automatic (whisker-sensitive) ylim in boxplots):
ax.boxplot(data_to_plot, sym='k.')
导致:
答案 1 :(得分:2)
如果飞行器标记设置为None
,您可能看不到传单。 page you linked to有一个for flier in bp['fliers']:
循环,用于设置飞行标记样式,颜色和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()
产量