You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SAS调整柱状图频数显示以凸显结果差值咨询

SAS柱状图频数展示调整方案

你当前的代码首先存在变量映射错误:通过PROC SQL构建的graphbar表仅包含Type(类别)、SUMA(汇总频数)两个字段,但PROC SGPLOT中指定的柱状图变量是不存在的Total,需要先修正该基础问题,再按需调整频数展示规则,优化不同类别结果的差异呈现效果。

1. 基础可运行绘图代码

先修正变量映射,默认在柱子上直接展示频数数值,方便直观对比:

proc sql ;
create table graphbar as
select *
from
(select "ACTIVE" as Type length=10, sum(ak.ACTIVE) as SUMA from policy_vintage_weekly2 as ak)
union
(select "EXPIRED" as Type length=10, sum(wy.EXPIRED) as SUMA from policy_vintage_weekly1 as wy)
;
quit;

proc SGPLOT data = graphbar; 
vbar Type / response=SUMA /* 指定汇总频数SUMA为柱子高度对应的数值 */
            datalabel /* 在柱子顶部展示具体频数值 */
            datalabelattrs=(size=12 weight=bold); /* 调整数值标签的大小、粗细提升可读性 */
yaxis label="频数" grid; /* Y轴添加网格线,更方便对比高度差异 */
xaxis label="保单状态";
run;

2. 不同场景的差异化展示优化

  • 若两类频数差值过大,小数值的柱子几乎不可见,可开启Y轴对数刻度,仅需要修改yaxis语句即可:
    yaxis label="频数(对数刻度)" grid type=log logbase=10;
    
  • 若需要同时展示频数绝对值和占比,可新增占比字段后调整绘图参数:
    /* 新增占比字段 */
    proc sql;
    create table graphbar as
    select Type, SUMA, SUMA/sum(SUMA) as PERCENT format=percent7.2
    from graphbar;
    quit;
    
    /* 同时展示频数和占比 */
    proc SGPLOT data = graphbar; 
    vbar Type / response=SUMA
                datalabel=SUMA datalabelpos=top
                seglabel=PERCENT seglabelpos=inside;
    yaxis label="频数" grid;
    xaxis label="保单状态";
    run;
    
  • 若有多维度分组展示需求,可提前将多维度汇总值整理到同一张表,通过group参数指定分组字段即可实现并列/堆叠柱状图效果。

内容的提问来源于stack exchange,提问作者user17322178

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 23:06:03