我无法在sas9.4中按组和子组创建堆积图表,我想要的图表类似于excel图表。请在下面找到示例数据和excel图表(第一张图片)以及SAS图表(第二张图片)。
我无法在同一轴(年)上设置SEGMENT'ACTUAL'和'FORECAST'的共同年份。实际意味着数据到2014年,预测意味着2014年之后,两者都应该在同一轴上。
goptions reset=all ;
goptions colors=(red blue green);
legend1 label=none ;
proc gchart data=NEW;
vbar year/ discrete type=sum sumvar=VALUE
group= segment subgroup=WKSCOPE ;
where year le 2020 AND YEAR ge 2012;
run;
答案 0 :(得分:2)
我会用注释来解决这个问题。我知道SGPLOT
比GCHART
更好,所以我会这样回答。
data have;
input segment $ year wkscope $ value;
datalines;
ACTUAL 2012 PH 5
ACTUAL 2012 PH 1
ACTUAL 2012 BHS 1
ACTUAL 2012 RES 2
ACTUAL 2013 PH 2
ACTUAL 2013 PH 5
ACTUAL 2013 BHS 1
ACTUAL 2014 RES 2
FORECAST 2015 PH 3
FORECAST 2015 BHS 0
FORECAST 2016 PH 4
FORECAST 2016 RES 1
FORECAST 2017 PH 5
FORECAST 2017 BHS 1
FORECAST 2017 RES 2
;;;;
run;
data sgannods;
x1space='wallpercent';
y1space='wallpercent';
x1=75;
y1=-10;
label="Forecast";
function='text';
output;
x1=25;
label="Actual";
output;
run;
proc sgplot data=have sganno=sgannods;
vbar year/response=value group=wkscope groupdisplay=stack;
run;
基本上,除了segment之外的所有事情,然后使用该值进行注释。您可以像我一样手动生成它,或者(最好)从原始数据生成它(如果它可以改变)。我使用WALLPERCENT
,因为它将在上半年预测实际上半年,但如果它可以改变(2实际4预测),那么你不应该这样做;您应该使用WALLPERCENT
并从数据中找出正确的位置(可能使用proc freq)或使用DATAVALUE
并将其置于中间值之下。
如果这还不够,我会去robslink.com,它有一套很好的例子(由GCHART的一组开发人员编写)。 Sanjay还有一个博客,Graphically Speaking,其中有一些很好的例子,都在SAS Communities上发布。
我制作的图像如下。它在其他方式上并不是特别接近,但所有这些都很容易修复(颜色方案,大小,传说的位置)。
数据标签是你能够做到这一点的一件事;如果您使用VBARPARM
,它们可以添加,但这需要提前汇总数据。 Sanjay在他blog posts的一个大约9.4M2(如果你有M2维护版本)中覆盖了这个;如果您的版本较旧,我也会在MWSUG Paper, Labelling without the Hassle: How to Produce Labeled Stacked Bar Charts Using
SGPLOT and GTL Without Annotate中介绍此内容。