簡體   English   中英

箱線圖失敗

[英]BoxPlot failure

我在創建箱線圖時遇到了麻煩。 沒有錯誤,只是沒有顯示所有要點:
3個df:

直到 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()

盒子 plot 缺少“Km 和液體”部分(只有一個點),並且只顯示了最大的 F4。

您的 dataframe 可能不包含您期望的信息。 或者F4部分的范圍可能完全不同? 例如,如果KmLiquid的值小 10 倍,它們將減少到接近零的一條線。

您可以打印出df2['Counts'][471:494]df2['Counts'][495:]來查看值的樣子。 下面的代碼添加了一個散點圖 plot 以查看所有點。

一些備注:

  • array[a:b]中的切片ab-1 (類似於 python 的 range 函數)。 所以你可能想使用data = [df2['Counts'][0:471], df2['Counts'][471:495],df2['Counts'][495:]]左右。
  • 建議不要混用ax. plt. 調用 matplotlib 函數的方式。
  • 通常最好在創建主 plot 之后調用xticks函數,因為許多函數都嘗試設置自己的刻度。
  • 設置xticklabels時,建議同時設置對應的xticks 在這種情況下,刻度內部編號為1, 2, 3

這是一些示例代碼,顯示了事物如何組合在一起。 為了幫助調試,添加了散點圖 plot 以查看所有點的實際位置。

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()

示例圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM