如何让plotnine保留DataFrame的x轴排序并简化坐标轴标题修改
Plotnine绘图:轴顺序保留与标题修改方案
问题描述
通过自定义排序函数处理字典后转成DataFrame,其中fld列按特定规则排序(例如A1.2排在A1.12之前),但使用plotnine绘图时x轴仍按字典序排列。同时想知道是否可以不指定scale_x_discrete这类scale类型,直接修改坐标轴标题。
一、保留DataFrame的x轴原有顺序
plotnine默认会对离散型x轴变量做字典序重排,要保留DataFrame里的排序,只需将fld列转换为有序分类类型,把DataFrame中已有的顺序设为分类顺序即可:
import pandas as pd from plotnine import ggplot, aes, geom_bar # 假设你的数据框是df df['fld'] = pd.Categorical(df['fld'], categories=df['fld'].unique(), ordered=True) # 绘图时就会沿用DataFrame里的顺序 (ggplot(df, aes(x='fld', y='value')) + geom_bar(stat='identity'))
这么做是因为有序分类会明确告诉plotnine变量的固有顺序,不会再自动重新排序。
二、不指定scale类型修改坐标轴标题
完全可以,直接用labs()函数就能实现,它不需要指定任何scale类型,是plotnine里统一设置各类标签的便捷方法:
(ggplot(df, aes(x='fld', y='value')) + geom_bar(stat='identity') + labs(x='你的X轴标题', y='你的Y轴标题', title='图表标题'))
labs()不仅能改轴标题,还能设置图表标题、图例标题等,比单独调用scale类函数更简洁灵活。
内容的提问来源于stack exchange,提问作者Antonio Sesto
相关产品推荐
相关产品推荐

