数据框中的Python重新排序级别用于步骤图

时间:2019-04-11 15:48:41

标签: python dataframe matplotlib

我绘制了一个阶梯图,而y刻度的顺序不是我想要的。我该如何重新排序?

以下是代码:

import numpy as np
import matplotlib.pyplot as plt
df = {'col1': [1, 2, 3, 4,5,6], 'col2': ['a', 'a', 'b', 'c', 'a','b']}
dat = pd.DataFrame(data = df)
plt.step(dat['col1'], dat['col2'])
plt.show()

这是我得到的情节:

enter image description here

但是我想要的是y刻度的顺序是[b,c,a]而不是[a,b,c]。我该怎么办?

谢谢

LT

2 个答案:

答案 0 :(得分:1)

您可以使用pd.Series的混合物作为mapper和ax.set_yticks:

import numpy as np
import matplotlib.pyplot as plt
df = {'col1': [1, 2, 3, 4,5,6], 'col2': ['a', 'a', 'b', 'c', 'a','b']}
dat = pd.DataFrame(data = df)

# Create a mapper from character to rank with the desired order:
order = ['b', 'c', 'a']
rank = pd.Series(range(len(order)), index=order)

fig, ax = plt.subplots()
ax.step(dat['col1'], rank.loc[dat['col2']])
ax.set_yticks(rank.values);
ax.set_yticklabels(rank.index)

enter image description here

答案 1 :(得分:1)

不幸的是,matplotlib当前不允许预先确定轴上类别的顺序。但是,一种选择是,首先以正确的顺序在轴上绘制某些东西,然后将其删除。这将确定后续实际打印的顺序。

setAutoPilot

enter image description here