我正在寻找一种有效的方法来绘制表示三个不同X值的三种不同算法平均值的图形。 目前,我尝试使用带有错误条的matplotlib给出标准偏差,但是它不允许我插入多个算法得分,因此只能插入一行:我想在同一张图中比较三种不同的行为! >
希望已经很清楚了。 这是我目前所做的
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()
答案 0 :(得分:0)
您只需要随时使用不同的值调用绘图函数即可。
我假设您的w.remove_menu_item(item.text())
和avg
向量具有相同的大小,因为它们是由相同的函数std
输出的。向量extract_statistics
可能有问题。也许此向量的大小与x
和avg
向量的大小不匹配。
在以下解决方案中,我们有三对向量std
和avg
:50、200、600。我们将这三个向量合并为一个向量std
和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()
。要在同一图中绘制多个图形时显示的内容。