我绘制了一个阶梯图,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()

这是我得到的情节:

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

但我想要的是 y 刻度的顺序是 [b, c, a] 而不是 [a,b,c]。我怎样才能做到这一点?

谢谢,

LT

最佳答案

您可以混合使用 pd.Series 作为映射器和 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)

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

关于用于步进图的数据框中的 Python 重新排序级别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55636508/

10-12 21:02