python - 如何在散点图中按所需顺序对 y 轴进行排序?
问题描述
我想用 x 轴主题和 y 轴内容为以下 DataFrame 制作散点图。
In[18]: test=pd.read_excel('test.xlsx')
In[19]: test
Out[19]: topic content
0 A1 a
1 A1 b
2 A2 b
3 A2 c
4 A2 e
5 A3 a
6 A3 c
7 A3 d
8 A4 b
9 A4 c
以下是我目前的情节:
如何以不同的顺序对 y 轴进行排序?比如 ['b', 'c', 'a', 'd', 'e'] 底部有'b'?
解决方案
如果 x 轴的顺序不重要,您可以使用 pandasCategorial
和sort_values()
:
df = pd.DataFrame([['A1','a'], ['A1','b'], ['A2','b'], ['A2','c'], ['A2','e'], ['A3','a'], ['A3','c'], ['A3','d'], ['A4','b'], ['A4','c']], columns=['topic','content'])
order = ['b', 'c', 'a', 'd', 'e']
df['content'] = pd.Categorical(df['content'], order)
df.sort_values(by=['content'], inplace=True)
plt.scatter(df['topic'], df['content'])
编辑
另一个解决方案可能是用整数替换每个值content
,df['content'] = [order.index(x) for x in df['content']]
并设置yticks
:
order = ['b', 'c', 'a', 'd', 'e']
df = pd.DataFrame([['A1','a'], ['A1','b'], ['A2','b'], ['A2','c'], ['A2','e'], ['A3','a'], ['A3','c'], ['A3','d'], ['A4','b'], ['A4','c']], columns=['topic','content'])
df['content'] = [order.index(x) for x in df['content']]
plt.yticks(range(len(order)), order)
plt.scatter(df['topic'], df['content'])
推荐阅读
- javascript - 此浏览器不支持使用 firebase SDK 所需的 ApI
- cmake - CMake 的 find_program / find_path / find_* 和源内构建
- react-admin - RichTextInput 中的 HTML 标记被转换为字符串
- apache-kafka - kafka主题分区的最大复制因子是多少
- c++ - 使用 tensorflow 1.15,有没有办法在 C++ 中加载在 python 中创建的 keras 模型并进行预测?
- c - 我正在审查 c 以获得我自己的启发。此代码用于示例链表。我不明白指针逻辑
- angular - 如何根据复选框动态应用 angular2-multiselect-dropdown 设置?
- .net - 如果令牌已经存在,.NET Oauth2 身份验证流程
- python-3.x - 获取在 python 程序中打开 GCP 的系统日期
- android - Android:我如何强制改造使用端口 80 作为基本 URL 的一部分