如何在ggplot中调整柱状图顺序:保留降序并固定指定柱子在底部
图表排序实现方案
Excel 操作步骤
- 先把Q7_1_66、Q7_1_99以外的数据单独选出来,按数值降序排序
- 把这两个目标变量对应的行剪切到数据表格的最后两行
- 选中全部数据生成柱状图,就能看到前半部分是降序的其他柱子,底部固定显示那两个目标柱子
- 要是后续数据需要更新,嫌手动调整麻烦,可以加个辅助列:
- 新增
排序优先级列,给Q7_1_66和Q7_1_99填1,其他数据填2+对应数值(比如=2+B2) - 按
排序优先级升序排序,目标变量会自动排在最后,其他数据保持数值降序
- 新增
Python(Matplotlib/Seaborn)代码实现
假设用pandas处理数据:
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 示例数据结构:df包含'变量'和'数值'两列 target_vars = ['Q7_1_66', 'Q7_1_99'] # 分离并排序非目标数据 non_target_data = df[~df['变量'].isin(target_vars)].sort_values(by='数值', ascending=False) # 提取目标数据 target_data = df[df['变量'].isin(target_vars)] # 合并成最终排序后的数据集 sorted_data = pd.concat([non_target_data, target_data]) # 绘制柱状图 sns.barplot(data=sorted_data, x='变量', y='数值') plt.xticks(rotation=45) # 可选,防止变量名重叠 plt.show()
运行后图表会先展示降序的非目标柱子,最后固定显示那两个指定变量的柱子
Tableau 配置步骤
- 将
变量字段拖到列功能区,数值拖到行功能区 - 右键点击
变量字段,创建计算字段,命名为排序规则,输入公式:IF [变量] = 'Q7_1_66' OR [变量] = 'Q7_1_99' THEN 0 ELSE [数值] END - 把
排序规则字段拖到行功能区,右键点击它选择「计算依据」->「变量」 - 右键点击
排序规则字段,选择「排序」->「降序」 - 最后右键点击
排序规则的坐标轴,选择「隐藏」,就能得到符合要求的图表
内容的提问来源于stack exchange,提问作者GonGas
相关产品推荐
相关产品推荐

