python - 绘制共享 x 值的三个函数
问题描述
我应该如何绘制共享 x 轴的三个不同平均值。
我尝试使用显示标准偏差的错误栏并不允许我插入多个“分数”,从而导致单线图
这就是我目前所做的
times_alg_1_sparse = times_alg1['Sparse']
avg_alg1_50_sparse, std_alg1_50_sparse = extract_statistics(times_alg_1_sparse.iloc[0])
avg_alg1_200_sparse, std_alg1_200_sparse = extract_statistics(times_alg_1_sparse.iloc[1])
avg_alg1_600_sparse, std_alg1_600_sparse = extract_statistics(times_alg_1_sparse.iloc[2])
x = np.array(times_alg_1_sparse.index)
y = np.array([avg_alg1_50_sparse*1000, avg_alg1_200_sparse*1000, avg_alg1_600_sparse*1000])
e = np.array([std_alg1_50_sparse*1000, std_alg1_200_sparse*1000, std_alg1_600_sparse*1000])
fig, ax = plt.subplots()
ax.errorbar(x, y, e, mfc='red', linestyle='solid', marker='^', color='red')
plt.ylim(0)
plt.show()
解决方案
您只需随时使用不同的值调用您的绘图函数。
我想你avg
和std
向量的大小相同,因为它们是相同函数的输出extract_statistics
。您的 vector 可能有问题x
。avg
也许这个向量的大小与和向量的大小不匹配std
。
在以下解决方案中,我们有三对向量avg
和std
:50、200、600。我们将 3 个向量组合成一个向量y
和e
。因此,在以下for
循环的每次迭代中,我们对来自向量和x
的 3 个不同索引使用相同的向量。为此,我们假设向量和 的每个元素具有相同的大小。y
e
x
y
e
例如,当我们调用类似的东西时y[:,0]
,我们正在对向量进行切片y
并获取该向量第一列的所有值。
times_alg_1_sparse = times_alg1['Sparse']
avg_alg1_50_sparse, std_alg1_50_sparse = extract_statistics(times_alg_1_sparse.iloc[0])
avg_alg1_200_sparse, std_alg1_200_sparse = extract_statistics(times_alg_1_sparse.iloc[1])
avg_alg1_600_sparse, std_alg1_600_sparse = extract_statistics(times_alg_1_sparse.iloc[2])
x = np.array(times_alg_1_sparse.index)
y = np.array([avg_alg1_50_sparse*1000, avg_alg1_200_sparse*1000, avg_alg1_600_sparse*1000])
e = np.array([std_alg1_50_sparse*1000, std_alg1_200_sparse*1000, std_alg1_600_sparse*1000])
colors = ['red', 'green', 'blue']
for k in range(3):
plt.errorbar(x, y[:,k], e[:,k], mfc=colors[k], linestyle='solid', marker='^', color=colors[k])
plt.ylim(0)
plt.show()
您正在尝试使用subplots
. 当您要在同一个图中绘制多个图形时,会指示什么。