首页 > 解决方案 > 绘制共享 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()

标签: pythonmatplotlibplotvisualization

解决方案


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

我想你avgstd向量的大小相同,因为它们是相同函数的输出extract_statistics。您的 vector 可能有问题xavg也许这个向量的大小与和向量的大小不匹配std

在以下解决方案中,我们有三对向量avgstd:50、200、600。我们将 3 个向量组合成一个向量ye。因此,在以下for循环的每次迭代中,我们对来自向量和x的 3 个不同索引使用相同的向量。为此,我们假设向量和 的每个元素具有相同的大小。yexye

例如,当我们调用类似的东西时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. 当您要在同一个图中绘制多个图形时,会指示什么。


推荐阅读