pandas 如何设置X轴刻度顺序?

ssgvzors  于 2023-01-07  发布在  其他
关注(0)|答案(1)|浏览(146)

DF:

USER_ID  EventNum
0        1390        17
1        4452        15
2         995        14
3         532        14
4        3281        14
...       ...       ...
5897     4971         1
5898     2637         1
5899      792         1
5900     5622         1
5901        1         1

[5902 rows x 2 columns]

我想绘制一个图形,使用USER_ID作为X轴,EventNum作为Y轴。为了避免轴混乱,我以固定的时间间隔对USER_ID值进行采样,作为xticks,如下所示:

[1390, 4899, 4062, 366, 5001, 3383, 5003, 446, 2879, 3220, 4006, 4595, 1713, 2649, 2291, 5647, 2040, 5468, 3719, 4198, 5622]

我确实喜欢这样,但似乎xticks值不是按照排序顺序(xticks)放置的,而是按照递增的数字顺序放置的(见下图)。

xticks = [1390, 4899, 4062, 366, 5001, 3383, 5003, 446, 2879, 3220, 4006, 4595, 1713, 2649, 2291, 5647, 2040, 5468, 3719, 4198, 5622]

ax = df.plot(x='USER_ID', y=['EventNum'], use_index=False, rot=270)
ax.set_xticks(xticks)
ax.set_xlabel('User ID')
ax.set_ylabel('Event Number')

我该怎么补救呢?

tkclm6bt

tkclm6bt1#

我想明白了,换条线就行了

ax.set_xticks(xticks)

用这个

ax.set_xticks(pos, xticks)

其中posxticks值的对应位置。
在我的例子中,它们分别如下:

pos: [0, 295, 590, 885, 1180, 1475, 1770, 2065, 2360, 2655, 2950, 3245, 3540, 3835, 4130, 4425, 4720, 5015, 5310, 5605, 5900]
xticks: [1390, 4899, 4062, 366, 5001, 3383, 5003, 446, 2879, 3220, 4006, 4595, 1713, 2649, 2291, 5647, 2040, 5468, 3719, 4198, 5622]

相关问题