箱线图失败
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
部分的范围可能完全不同?如果例如Km
、Liquid
的值小 10 倍,它们将减少到接近零的一条线。
您可以打印出 df2['Counts'][471:494]
和 df2['Counts'][495:]
以查看值的外观。下面的代码添加了一个散点图以查看所有点。
一些备注:
- Slicing 和
array[a:b]
一样,从 a
到 b-1
(类似于 python 的范围函数)。所以你可能想使用 data = [df2['Counts'][0:471], df2['Counts'][471:495],df2['Counts'][495:]]
左右。
- 建议不要混用calling matplotlib functions的
ax.
和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()
我在创建箱线图时遇到了问题。没有错误,只是没有说明所有要点:
直到 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
部分的范围可能完全不同?如果例如Km
、Liquid
的值小 10 倍,它们将减少到接近零的一条线。
您可以打印出 df2['Counts'][471:494]
和 df2['Counts'][495:]
以查看值的外观。下面的代码添加了一个散点图以查看所有点。
一些备注:
- Slicing 和
array[a:b]
一样,从a
到b-1
(类似于 python 的范围函数)。所以你可能想使用data = [df2['Counts'][0:471], df2['Counts'][471:495],df2['Counts'][495:]]
左右。 - 建议不要混用calling matplotlib functions的
ax.
和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()