在SAS中绘制直方图和箱线图
我在sas中编写了以下代码,但没有得到结果 结果直方图为灰色,数据范围不符合我的规定!有什么问题 我也得到了以下警告:警告:中点=列表被扩展以容纳数据 颜色呢在SAS中绘制直方图和箱线图,sas,histogram,boxplot,Sas,Histogram,Boxplot,我在sas中编写了以下代码,但没有得到结果 结果直方图为灰色,数据范围不符合我的规定!有什么问题 我也得到了以下警告:警告:中点=列表被扩展以容纳数据 颜色呢 axis1 order=(0 to 100000 by 50000); axis2 order=(0 to 100 by 5); run; proc capability data=HW2 noprint; histogram Mvisits/midpoints=0 to 98000 by 10000 haxis=axis1 cfill=
axis1 order=(0 to 100000 by 50000);
axis2 order=(0 to 100 by 5);
run;
proc capability data=HW2 noprint;
histogram Mvisits/midpoints=0 to 98000 by 10000
haxis=axis1
cfill=blue;
run;
我对箱线图也有同样的问题,例如,我得到了下面的图,我想改变距离,然后我可以更好地看到图,但我不能
以下是关于
proc单变量的而不是proc能力
,我无法访问SAS/QC进行测试,但《用户指南》为直方图语句显示了非常相似的语法。希望你能把它翻译回来
由于输出系统的原因,您的颜色似乎有问题。您的图形可能是通过ODS交付的,在这种情况下,cfill选项不适用(请参阅而不是传统的图形标签)
要更改ODS输出中直方图条的颜色,可以使用proc template
:
proc template;
define style styles.testStyle;
parent = styles.htmlblue;
style GraphDataDefault /
color = green;
end;
run;
ods listing style = styles.testStyle;
proc univariate data = sashelp.cars;
histogram mpg_city;
run;
可以找到一个例子来解释这一点
或者,您可以使用proc sgplot
创建直方图,对颜色进行更多控制,如下所示:
proc sgplot data = sashelp.cars;
histogram mpg_city / fillattrs = (color = red);
run;
至于你关于截断直方图的问题。忽略极值并没有多大意义,因为它会给你一个错误的分布图像,这在某种程度上违背了直方图的目的。也就是说,你可以通过一些技巧来实现你的要求:
data tempData;
set sashelp.cars;
tempClass = 1;
run;
proc univariate data = tempData noprint;
class tempClass;
histogram mpg_city / maxnbin = 5 endpoints = 0 to 25 by 5;
run;
在上面的示例中,创建了一个虚拟类tempClass
,然后使用class
语句请求比较直方图maxnbins
将限制仅在比较直方图中显示的箱子数量
您的另一个选择是在创建直方图之前排除(或限制)极端点,但这将导致频率计数/百分比/条形高度稍有错误
data tempData;
set sashelp.cars;
mpg_city = min(mpg_city, 20);
run;
proc univariate data = tempData noprint;
histogram mpg_city / endpoints = 0 to 25 by 5;
run;
这是解决原始问题的一种可能方法(未经测试,因为没有SAS/QC或数据):
proc能力数据=HW2 noprint;
直方图Mvisits/
中点=0到300000乘以10000
没有
outhistogram=历史数据;
跑
proc sgplot data=历史数据;
vbar _MIDPT /
响应=\u OBSPCT\u
fillattrs=(颜色=蓝色);
其中_MIDPT u您有非常大的值,如果您对可视化典型值周围的数据分布感兴趣(例如,直方图为0-3000),则这两个图都将无效。在任何情况下,这个问题都是离题的,因为它是关于SAS编程的。可能重复感谢您的回答:)顺便问一下,我如何更改代码以使方框图更清晰?或者由于数据分布,箱线图异常!!!我建议您阅读文档以了解直方图语句,也可以阅读ODS和proc sgplot,从长远来看,了解系统的工作方式可能会节省您的时间。也就是说,我在上面添加了一种可能的方法;由于我没有SAS/QC或您的数据,因此未经测试。
proc capability data = HW2 noprint;
histogram Mvisits /
midpoints = 0 to 300000 by 10000
noplot
outhistogram = histData;
run;
proc sgplot data = histData;
vbar _MIDPT_ /
response = _OBSPCT_
fillattrs = (color = blue);
where _MIDPT_ <= 100000;
run;