【问题标题】:Matplotlib not plotting sorted dataset in correct orderMatplotlib 未按正确顺序绘制排序数据集
【发布时间】:2018-01-09 17:49:27
【问题描述】:

我有一个与以下类似的数据集

Group       Values
-------     -------
Group A       5
Group B       2
Group C       10

我对数据集进行了排序:

dataset2 = data.sort_values(by= 'Values', ascending=False)

当我显示dataset2 时,它会以正确的降序正确显示数据集。但是,当我用matplotlib 绘制dataset2 时,它使用原始数据顺序绘制它;不是排序的。

left = dataset2.index.values

height = dataset2['Values']  # heights of bars
tick_label = dataset2['Group']  # labels for bars

# plotting a bar chart
plt.bar(left, height, tick_label = tick_label, width = 0.8)
plt.xticks(rotation=90)
plt.show()

【问题讨论】:

  • 当你输出dataset2['Values']时会发生什么?
  • 索引的全部意义在于,如果您对数据框进行排序,它不会改变。因此输出保持不变,即“GroupA”仍将具有索引 0,即使它位于已排序数据帧的第二行。您可以创建一个新索引来进行绘图,而不是使用旧索引。
  • 基本故障排除:print(left)。你看到了什么?

标签: python-3.x pandas matplotlib


【解决方案1】:

我能够通过两件事来解决这个问题:

1) 制作已排序数据集的副本。

data_sorted = dataset2.copy()

2) 把左边改成:

left = np.arange(len(data_sorted))

由于某种原因,当我使用索引来设置 x 轴时,它使用的是原始数据集中的原始索引。我认为当您对值进行排序时,索引会被重置。

【讨论】:

    猜你喜欢
    • 2018-04-21
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    • 1970-01-01
    相关资源
    最近更新 更多