欢迎来到SAS程序分享号
前段时间,小编看了一些生物等效性的资料,于是还在努力学习中的小编打算分享一段关于绘制时药曲线的程序。内容虽然比较单一,但是涉及到的SAS画图语句以及一些程序处理的细节也是值得一看的。
时药曲线
嗯,第一个要分享的是单图的绘制,体现的是血药浓度的均值与标准差随时间的变化情况。上图标准差的绘制可以通过yErrorLower、yErrorupper实现。
嗯,有了数据就可以吭哧吭哧地写代码。
代码语言:javascript复制ods rtf file="D:日常练习方差分析PKdatatest.rtf";
ods graphics / width=550px height=400px border=off;
proc sgplot data=have noborder ;
styleattrs datacontrastcolors=( blue red) datalinepatterns=(solid shortdash) datasymbols=(circle triangle);
scatter x=PKTPT y=MEAN / group=GROUP yErrorUpper =upperstd yErrorlower=lowerstd ;
series x=PKTPT y=MEAN/ group=GROUP name='L2' lineattrs=(thickness=2) markers ;
keylegend 'L2' / location=inside position=topright noborder ACROSS=1 ;
xaxis label="时间(h)" values=(0 to 80 by 10) ;
yaxis label="血药浓度(ng/mL)" values=(0 to 500 by 50 );
run;
ods rtf close;
GTL绘制过程
当然也能通过GTL语句实现一样的效果。下面来看一下GTL语句实现的代码。
代码语言:javascript复制ods rtf file="D:日常练习方差分析PKdatatest.rtf";
ods graphics / width=550px height=400px border=off;
proc template;
define statgraph drwaaa;
begingraph/backgroundcolor=white border=false ;
dynamic Yvar1 ;
*实现 散点形状、线条类型、颜色; ;
discreteattrmap name="temp1" / ignorecase=true;
value "R" /markerattrs=GraphData1(color=blue symbol=circle) lineattrs=GraphData1(color=blue pattern=solid);
value "T" /markerattrs=GraphData1(color=red symbol=triangledown) lineattrs=GraphData1(color=red pattern=shortdash);
enddiscreteattrmap;
discreteattrvar attrvar=markers var=group attrmap="temp1";
layout lattice / border=false ;
layout OVERLAY/CYCLEATTRS=TRUE
Xaxisopts=(gridDisplay=off LABEL="时间(h)" LABELATTRS=( size=7pt)/*坐标轴标签属性修改*/
TICKVALUEATTRS=( size=7pt)/*坐标轴值属性修改*/ linearopts=( TICKVALUELIST=(0 10 20 30 40 50 60 70 80 ) ) )
Yaxisopts=(gridDisplay=off LABEL="血药浓度(ng/mL)" LABELATTRS=(size=7pt)/*坐标轴标签属性修改*/
TICKVALUEATTRS=( size=7pt)/*坐标轴值属性修改*/ linearopts=( TICKVALUELIST=(0 50 100 150 200 250 300 350 400 450 500 ) ) );
seriesplot x=PKTPT y=Yvar1 / group=markers name="series" lineattrs=(thickness=2) display=(markers) ;
Scatterplot X=PKTPT Y=Yvar1/ yerrorlower=lowerstd yerrorupper=upperstd GROUP=markers ;
discretelegend "series" / location=inside autoalign=(topright topleft) opaque=true border=false across=1;
endlayout;
endlayout;
Endgraph; end;
run;
proc sgrender data=have template=drwaaa;
dynamic Yvar1="MEAN";
run;
ods rtf close;
显而易见,使用GTL绘制图形看似是较为繁琐的,但是GTL在绘图上也是很有优势的,GTL绘制拼图可直接输出至RTF中,而这一点SGPLOT是做不到的。所以并不太推荐使用SGPLOT来绘制拼图。
受试者维度的时药曲线