SAS作图时如果使用默认的配色,颜色会较暗,而且会因为数据自身的原因导致同一个代码绘制的图给分组的颜色不同,影响观感和方便性。
例如利用proc sgplot中的by语句画出基于不同地区的百分条图中会出现不同的地区“种类"这个变量分组的颜色不一样:
上面两张图里左图在region=C中,“种类”这个变量中A-蓝色,B-绿色,C-红色,但是在右图region=A时变成了A-蓝色,B-红色
要改变颜色,可以尝试 ATTRID= option
具体操作方法如下:
先创建一个新的数据集myattramp,主要用于制定proc sgplot语句中group变量的各个值的格式,linecolor为框线颜色,fillcolor为填充颜色,value为group变量的赋值,steelblue、skyblue和lightsteelblue是三种深浅不一的蓝色的名称,其他的颜色名称可以在网上找到。
data myattrmap;
length linecolor $ 14 fillcolor $ 14;
input ID $ value $ linecolor $ fillcolor $;
datalines;
myid A steelblue steelblue
myid B skyblue skyblue
myid C lightsteelblue lightsteelblue
;
run;
创建好数据集后,在proc sgplot代码中引用这个数据集即可(加粗为引用部分),代码如下
proc sgplot data=test pctlevel=group dattrmap=myattrmap;
styleattrs datacolors=(steelblue skyblue lightsteelblue) ;
by region;/*注意要提前使用proc sort排序*/
hbar province / group=type/*分组变量*/
groupdisplay=stack /*绘制堆叠式百分条图*/
attrid=myid
stat=percent
categoryorder=respdesc
datalabel datalabelattrs=(Family=Arial Size=8 Style=Italic Weight=Bold)
seglabel seglabelattrs=(color=white size=10 weight=bold);/*设置各种字体及格式*/
yaxis discreteorder=data label="省份";
xaxis grid values=(0 to 1 by 0.1) ;
run;
重新运行代码后,就发现图片变成了这样
可以发现,“种类”中对应的颜色保持一致了,但是这个配色还是有一点丑,具体的可以在使用中再调整。
将自己在学习SAS过程中遇到的问题和最后使用的解决方法记录下来,如果有错漏或者更好的解决方法欢迎大家一起讨论哦~
参考资料:SAS Help Center