使用 Proc sgplot 的条形图中每个条的不同标签

Different label for each bar in a bar chart using Proc sgplot

我正在尝试使用 SAS 中的 Proc sgplot 将每个组的数量添加到 xaxis 上的组标签中。这是我想要的数据和图表。我想要 xaxis 上每个条的样本(手写部分)。非常感谢您的帮助!

Data have ;
input type  sex $  n n_total percent ;
datalines;
0  F  6    29  20.7 
1  F  387  496 78.2  
0  M  4    15  26.6
1  M  264  305 86.5
;
Run; 

proc sgplot data=have ;
vbarparm category= type  response=percent /group=sex groupdisplay=cluster datalabel;
run; 

我要创建的图表:

您可以计算显示 百分比值 和文本 n=

的条形数据标签

示例:

Data have ;
input type  sex $  n n_total percent ;
datalines;
0  F  6    29  20.7 
1  F  387  496 78.2  
0  M  4    15  26.6
1  M  264  305 86.5
;
Run; 

data plot;
  set have;
  barlabel = cats(percent) || ' %N/(n=' || cats(n_total, ')');
run;

proc sgplot data=plot;
  vbarparm 
    category=type  
    response=percent 
  / group=sex 
    groupdisplay=cluster 
    datalabel=barlabel datalabelfitpolicy=splitalways splitchar='/'
  ;
  label percent = 'Percent N having some attribute';
run; 

虽然我同意 Richard 的观点,您最好将其放在条形标签中,但也很容易将其放在轴 table 中。

Data have ;
input type  sex $  n n_total percent ;
datalines;
0  F  6    29  20.7 
1  F  387  496 78.2  
0  M  4    15  26.6
1  M  264  305 86.5
;
Run; 

proc sgplot data=have ;
vbarparm category= type  response=percent /group=sex groupdisplay=cluster datalabel;
xaxistable n_total/class=sex classdisplay=cluster position=bottom location=inside colorgroup=sex;
run; 

classdisplay=cluster 使值像条形一样展开,location=inside 将其放在条形的正下方,colorgroup=sex 使其像条形一样着色(而不是黑色)。 position=bottom 是默认值,只是突出显示该选项。

如果您愿意,您可以按照 Richard 所做的相同方式进一步自定义显示的内容 - 通过创建一个文本变量,其中包含您想要为每个显示的内容,并将其用作您的 variablexaxistable 的第一个参数)。该变量可以是数字或字符。