Jer*_*myD 5 python matplotlib scatter-plot
我正在尝试使用从实验中收集的指标数据创建一个简单的散点图。我每天都会测试多个实验样本,并且样本数量各不相同。我正在尝试创建一个散点图,其中将天数作为 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]]
Run Code Online (Sandbox Code Playgroud)
由于 pyplot 希望 x 和 y 具有相同的维度,我尝试了以下建议
for xe, ye in zip(XVals, YVals):
plt.scatter([xe] * len(ye), ye)
Run Code Online (Sandbox Code Playgroud)
这给了我一个值错误,因为我的 xval 是字符串。
ValueError: could not convert string to float: '10-Dec-18'
Run Code Online (Sandbox Code Playgroud)
我还尝试以以下方式生成绘图,但我再次收到错误消息,因为 x 和 y 的尺寸不同:
fig, ax = plt.subplots()
ax.scatter(XVals, YVals)
plt.show()
Run Code Online (Sandbox Code Playgroud)
这给了我一个明显的错误:
ValueError: x and y must be the same size
Run Code Online (Sandbox Code Playgroud)
我无法找到类似图的任何示例(多个 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()
Run Code Online (Sandbox Code Playgroud)