SAS-时药曲线的绘制

2019-10-20 14:31:50 浏览数 (1)

欢迎来到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来绘制拼图。

受试者维度的时药曲线

sas

0 人点赞