如何在Julia堆叠条形图中设置百分比Y轴?
在Julia中为堆叠条形图设置百分比Y轴
要实现带百分比Y轴的堆叠条形图,核心是先将原始数据转换为每组的占比(0-1范围),再自定义Y轴刻度标签为百分比格式,具体实现如下:
数据转换与绘图完整代码
using StatsPlots # 原始数据 measles = [38556, 24472, 14556, 18060, 19549, 8122, 28541, 7880, 3283, 4135, 7953, 1884] mumps = [20178, 23536, 34561, 37395, 36072, 32237, 18597, 9408, 6005, 6268, 8963, 13882] chickenPox = [37140, 32169, 37533, 39103, 33244, 23269, 16737, 5411, 3435, 6052, 12825, 23332] # 将数据转换为每组的百分比占比 data_matrix = hcat(measles, mumps, chickenPox) group_totals = sum(data_matrix, dims=2) percent_data = data_matrix ./ group_totals # 绘制堆叠条形图并设置百分比Y轴 tick_labels = string.(collect('A':'L')) groupedbar(percent_data, bar_position = :stack, bar_width=0.7, xticks=(1:12, tick_labels), label=["measles" "mumps" "chickenPox"], # 自定义Y轴刻度:数值范围0-1,对应标签为百分比 yticks=(0:0.2:1, ["0%", "20%", "40%", "60%", "80%", "100%"]), ylabel="占比")
核心逻辑说明
- 数据转换:通过
data_matrix ./ group_totals将每组数据转换为占比(0到1之间的数值),确保每组堆叠后的总高度对应100% - 刻度自定义:利用
yticks参数手动映射数值与百分比标签,也可以用动态生成方式简化标签编写,比如:yticks=(0:0.2:1, [string(Int(i*100)) * "%" for i in 0:0.2:1])
内容的提问来源于stack exchange,提问作者Quinten
相关产品推荐
相关产品推荐

