箱线图失败

BoxPlot failure

我在创建箱线图时遇到了问题。没有错误,只是没有说明所有要点:

直到 513

我的代码:

data = [df2['Counts'][0:470], df2['Counts'][471:494],df2['Counts'][495:]]
fig1, ax4 = plt.subplots()
ax4.set_title('Furter vs Krum serum')
plt.xticks([] ,['F4','Km','Liquid' ])
ax4.boxplot(data)
plt.show()

箱形图缺少“Km 和液体”部分(只有一个点),仅显示最大的一组 F4。

可能您的数据框不包含您期望的信息。或者 F4 部分的范围可能完全不同?如果例如KmLiquid 的值小 10 倍,它们将减少到接近零的一条线。

您可以打印出 df2['Counts'][471:494]df2['Counts'][495:] 以查看值的外观。下面的代码添加了一个散点图以查看所有点。

一些备注:

  • Slicingarray[a:b] 一样,从 ab-1(类似于 python 的范围函数)。所以你可能想使用 data = [df2['Counts'][0:471], df2['Counts'][471:495],df2['Counts'][495:]] 左右。
  • 建议不要混用calling matplotlib functionsax.plt.方式。
  • 通常最好在创建主图后调用 xticks 函数,因为许多函数会尝试设置自己的刻度。
  • 设置xticklabels时,建议同时设置对应的xticks。在这种情况下,刻度在内部编号为 1, 2, 3.

这里是一些示例代码,展示了如何将事物组合在一起。为了帮助调试,添加了散点图以查看所有点的实际位置。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

df2 = pd.DataFrame({'Counts': np.random.normal(0.02, 0.002, 513)})

data = [df2['Counts'][0:471], df2['Counts'][471:495], df2['Counts'][495:]]
fig1, ax4 = plt.subplots()
ax4.boxplot(data)
for i in range(3):
    ax4.scatter(np.repeat([i+1], len(data[i])), data[i])
ax4.set_title('Furter vs Krum serum')
ax4.set_xticks([1, 2, 3])
ax4.set_xticklabels(['F4', 'Km', 'Liquid'])
plt.show()