如何在Tableau中水平翻转条形图(不交换坐标轴)
实现Y轴移至右侧的水平条形图(不交换坐标轴)
以Matplotlib为例,你可以通过以下步骤实现需求:
- 绘制常规水平条形图后,隐藏左侧原生Y轴
- 创建右侧共享X轴的Y轴,并将原Y轴的刻度、标签迁移过去
代码示例
import matplotlib.pyplot as plt import numpy as np # 模拟数据集:年龄组及对应男女计数 age_groups = ["18-24", "25-34", "35-44", "45-54", "55+"] male_counts = [120, 180, 150, 90, 60] female_counts = [100, 160, 140, 80, 70] # 创建画布与坐标轴 fig, ax = plt.subplots() # 绘制分组水平条形图,设置偏移避免重叠 y_pos = np.arange(len(age_groups)) bar_width = 0.35 ax.barh(y_pos - bar_width/2, male_counts, bar_width, label='男性') ax.barh(y_pos + bar_width/2, female_counts, bar_width, label='女性') # 隐藏左侧原生Y轴 ax.yaxis.set_visible(False) # 创建右侧Y轴,共享X轴以保持刻度一致 ax_right = ax.twinx() # 同步右侧Y轴的刻度与标签 ax_right.set_yticks(y_pos) ax_right.set_yticklabels(age_groups) # 设置图表标签与标题 ax.set_xlabel('计数') ax_right.set_ylabel('年龄组') ax.legend() plt.title('各年龄组性别分布计数') # 调整布局防止标签截断 plt.tight_layout() plt.show()
关键逻辑说明
ax.yaxis.set_visible(False)直接隐藏左侧Y轴,保留条形图主体ax.twinx()创建与原坐标轴共享X轴的右侧Y轴,确保X轴始终代表计数,不交换坐标轴- 通过同步
yticks和yticklabels,把原Y轴的年龄组标签移到右侧显示
内容的提问来源于stack exchange,提问作者Devils_Own
相关产品推荐
相关产品推荐

