如何以正确的方式绘制共享x值的三个平均值?

时间:2018-07-13 23:17:09

标签: python python-3.x matplotlib plot visualization

我正在寻找一种有效的方法来绘制表示三个不同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()

1 个答案:

答案 0 :(得分:0)

您只需要随时使用不同的值调用绘图函数即可。

我假设您的w.remove_menu_item(item.text()) avg向量具有相同的大小,因为它们是由相同的函数std输出的。向量extract_statistics可能有问题。也许此向量的大小与xavg向量的大小不匹配。

在以下解决方案中,我们有三对向量stdavg:50、200、600。我们将这三个向量合并为一个向量stdy 。因此,在以下e循环的每次迭代中,我们对来自向量forx的3个不同索引使用相同的向量y。为此,我们假设向量e以及xy的每个元素都具有相同的大小。

例如,当我们调用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() 。要在同一图中绘制多个图形时显示的内容。