sas - SGPLOT 两个 Y 轴
问题描述
我有一个如下所示的数据集:
pt_fin Admit_Type MONTH_YEAR BED_ORDERED_TO_DISPO (minutes)
1 Acute Jan 214
2 Acute Jan 628
3 ICU Jan 300
4 ICU Feb 99
我已经有一个代码(见下文),它产生一个带有 ax (承认类型分组我的月份)和 y 轴(中位数床位到处置时间)的图,但我想添加一个辅助 Y 轴来计算患者的数量用于计算每个相应的中位数。
例如,我想要一个对应于月份和入院类型的次要 Y 轴数据点,因此对于 Jan,次要 Y 轴数据点将有 2 个单独的计数 1) 入院急性患者和 2) 患者住进ICU。
proc sgplot data=Combined;
title "Median Bed Order To Dispo By Month, Admit Location";
vbar MONTH_YEAR / response=BED_ORDERED_TO_DISPO stat=median
group = Admit_Type groupdisplay=cluster ;
run;
我一直在尝试调整我在这里找到的内容,但是我的代码生成的图非常混乱且不正确。
https://blogs.sas.com/content/iml/2019/01/14/align-y-y2-axes-sgplot.html
期望的输出(假设 X 和 * 分别连接在对应于 Y 轴的折线图中):
| * |
m | | | X | | #
e | x | | * |
d | | | | | |
|-------------------------------|
Acute ICU Acute ICU
Jan FEb
我尝试过的产生垃圾的代码
proc sgplot data=Combined;
vbarbasic MONTH_YEAR/ response=Bed_Order_Hour y2axis; /*needs to be on y axis 1*/
group = Admit_Type
series x=MONTH_YEAR y=Pt_fin/ markers; *Pt_fin needs to be on y axis 2*/
run;
解决方案
您的可视化解释很弱。您可能希望在SGPLOT
,VBAR
和中使用两个绘图语句VLINE
。
data have;
do type = 'Acute', 'ICU';
do month = '01jan2018'd to '31dec2018'd;
do _n_ = 1 to floor (50 * ranuni(123));
patid + 1;
minutes = 10 + floor(1000 * ranuni(123));
output;
end;
month = intnx ('month', month, 0, 'e');
end;
end;
format month monname3.;
run;
ods html5 file="plot.html" path="c:\temp";
proc sgplot data=have;
title "Median of patient minutes by month";
vbar month / group=type groupdisplay=cluster response=minutes stat=median;
vline month / group=type groupdisplay=cluster response=minutes stat=freq y2axis ;
run;
ods html5 close;
向vline
观众展示了对每个中值频率的次要关注。只需修改 vbar 强度,就可以传达中值的相同信息(作为一个方面)。最高频率条(中位数)将是“最强”的阴影,而较低的“频率”条将褪色。
推荐阅读
- python-3.x - 需要解决方法来处理数据框中的时间戳并获取日期时间
- java - 无法在cmd Java中打开多类程序
- python - 根据特定值拆分整数列表
- android - 如何在单个 super() 中添加两个视图?
- wordpress - 静态文件未在 NGINX 的多站点 WordPress 上加载
- vulkan - 使用 vulkan 绘制调用之间的存储缓冲区同步
- linq - 无法使 GroupJoin 工作。NavigationExpandingExpressionVisitor 异常
- docker - 递归复制匹配文件名的文件并保留目录结构
- c# - 在父级更改时调整派生方法的可访问性
- python - 将 1300 个数据帧合并为一个帧变得非常慢