在 y 轴上重新排序重新标记的数据

问题描述 投票:0回答:1

我有一个数据集,x 是一个元组整数:

[1,2,3,4,5,6,7,8,9,10,...40]

y 是一个字符串元组

['5', '2', '5', '2', '5', '2', '5', '2', '5', '2', '5', '2', “5”、“2”、“4”、“2”、“4”、“2”、“5”、“1”、“5”、“2”、“5”、“2”、“1” '、'3'、'5'、'0'、'5'、'3'、'5'、'3'、'5'、'3'、'5'、'3'、'5'、 ‘3’、‘4’、‘0’]。

y轴数据需要转换为分类数据('5'->W,'4'->R,'3'->'N1','2'->'N2','1'-> 'N1')。零不需要标签。我选择按原样绘制它们,只更改 y 轴上的标签:

import matplotlib.ticker as ticker
conv_tup=np.array(x)
fig, ax = plt.subplots()
ax.scatter(conv_tup/2,y)
y_labels={1:'W',2:'N1',3:'N2',4:'N3',5:'R'}
plt.yticks(list(y_labels.keys()), y_labels.values())
plt.show()

但是,我想更改数据在 y 轴上显示的顺序(不仅仅是重新标记它们)并具有此顺序(从上到下 y 轴):W,R,N1,N2,N3 并将它们都绘制为散点图,但也可以作为线图。谢谢。

python matplotlib plot categorical-data
1个回答
1
投票

IIUC,首先将

y
数据转换为数字,这应该以正确的顺序绘制点,并更改末尾的 yticklabels:

fig, ax = plt.subplots()
ax.plot(conv_tup/2, np.array(y).astype(int), '-o')
ax.set_yticks(range(6), ['', 'N3', 'N2', 'N1', 'R', 'W'])
plt.show()

输出:

交换

1
3

y_star = np.array(y).astype(int)
is_1 = (y_star == 1)
is_3 = (y_star == 3)
y_star[is_1] = 3
y_star[is_3] = 1

fig, ax = plt.subplots()
ax.plot(conv_tup/2, y_star, '-o')
ax.set_yticks(range(6), ['', 'N3', 'N2', 'N1', 'R', 'W'])
plt.show()

输出:

© www.soinside.com 2019 - 2024. All rights reserved.