【问题标题】:How to invert the order in Matplotlib diverging plot?如何反转 Matplotlib 发散图中的顺序?
【发布时间】:2021-08-06 08:32:46
【问题描述】:

我有一个带有ordered 值和ordered index 的数据框

     PERFORMER_ID   Number_of_Activities    colors
0        535    24  darkgreen
1        1FD    20  darkgreen
2        4F8    14  darkgreen
3        A8D    14  darkgreen
4        57D    11  darkgreen
5        D8B    10  darkgreen
6        064    9   darkgreen
7        D9F    9   darkgreen
8        684    9   darkgreen
9        F87    9   darkgreen
10       5A8    -1  red
11       5A6    -1  red
12       5A1    -1  red
13       59B    -1  red
14       59A    -1  red
15       587    -1  red
16       581    -1  red
17       578    -1  red
18       574    -1  red
19       7C3    -1  red

我正在尝试用上述数据分散情节

# Draw plot
import matplotlib.patches as patches

plt.figure(figsize=(10,12), dpi= 80)
plt.hlines(y=data.index, xmin=0, xmax=data.Number_of_Activities, color=data.colors, alpha=0.4, linewidth=1)
plt.scatter(data.Number_of_Activities, data.index, color=data.colors, s=600, alpha=0.6)

for x, y, tex in zip(data.Number_of_Activities, data.index, data.Number_of_Activities):
    t = plt.text(x, y, abs(tex), horizontalalignment='center', 
                 verticalalignment='center', fontdict={'color':'white'})
    
plt.yticks(data.index, data.PERFORMER_ID)
plt.xticks(fontsize=12)



# # Add Patches
# p1 = patches.Rectangle((-2.0, -1), width=.3, height=3, alpha=.2, facecolor='red')
# p2 = patches.Rectangle((1.5, 27), width=.8, height=5, alpha=.2, facecolor='green')
# plt.gca().add_patch(p1)
# plt.gca().add_patch(p2)

# Decorate
plt.title('Performers with Most & Less Activities', fontdict={'size':12})
plt.grid(linestyle='--', alpha=0.5)
plt.show()

我以相反的顺序得到了情节。如何按照给定的顺序绘制,或者如何反转上图中的值(底部 10 向上,顶部 10 向下)?

【问题讨论】:

  • 我不确定组中的顺序应该是什么,但是要反过来看,试试这个。 data.sort_index(ascending=False, ignore_index=True, inplace=True)
  • 它使用Number_of_Activities 排序,使用data.sort_values(by="Number_of_Activities", ascending=False, inplace=True),这是我想要绘制的必需顺序
  • data.sort_index(ascending=False, ignore_index=True, inplace=True) 这很有效。谢谢@r-beginners
  • @r-beginners 请务必将其发布为答案,我很乐意接受答案...

标签: python matplotlib data-visualization


【解决方案1】:

解决这个问题的最简单方法是重新排序和重新索引数据。

data.sort_index(ascending=False, ignore_index=True, inplace=True)

【讨论】:

猜你喜欢
  • 2019-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-07
  • 2016-09-04
  • 2016-05-09
相关资源
最近更新 更多