簡體   English   中英

pyplot:使用多個Y值和分類X值繪制散點圖

[英]pyplot: Plotting scatter plot with multiple Y values and categorical X values

我正在嘗試使用從實驗中收集的指標數據創建一個簡單的散點圖。 每天,我都會測試多個實驗樣本,樣本數量會有所不同。 我正在嘗試創建一個散點圖,將天作為x值,並將當天收集的所有實驗值作為y值。

到目前為止,我已經嘗試了幾種方法。

我將保留完整的代碼,但是下面是數據的示例:

XVals = ['10-Dec-18', '11-Dec-18']
YVals = [[0.88, 0.78, 0.92, 0.98, 0.91],[0.88, 0.78, 0.92, 0.98]]

由於pyplot希望x和y具有相同的維數,因此我嘗試了以下建議

for xe, ye in zip(XVals, YVals):
   plt.scatter([xe] * len(ye), ye)

這給了我一個值錯誤,因為我的xval是字符串。

ValueError: could not convert string to float: '10-Dec-18'

我也嘗試過以以下方式生成圖,但是由於x和y的尺寸不同,我又收到一條錯誤消息:

fig, ax = plt.subplots()
ax.scatter(XVals, YVals)
plt.show()

這給了我明顯的錯誤:

ValueError: x and y must be the same size

我還沒有找到任何類似圖的示例(多個Y值和X類別的分類值)。 任何幫助,將不勝感激!

一種選擇是為數據創建扁平化列表。 第一個列表X包含每個數據點的日期。 每天重復n次,其中n是該天的數據點數。 第二個列表Y只是YVals的扁平化版本。

import matplotlib.pyplot as plt

XVals = ['10-Dec-18', '11-Dec-18']
YVals = [[0.88, 0.78, 0.92, 0.98, 0.91],[0.88, 0.78, 0.92, 0.98]]

X = [XVals[i] for i, data in enumerate(YVals) for j in range(len(data))]
Y = [val for data in YVals for val in data]

plt.scatter(X, Y)
plt.show()

在此處輸入圖片說明

暫無
暫無

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

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