大神们,想请教个问题,
现在想画图,实现下图中的黄色部分的label,
下图是正确的 要画出的图的样子:
现在遇到一点问题,问题在于,要让从day1(就是横轴的D1)开始到D29 是 period 1, D43到D72 是 period 2, D85 和 D127是follow-up period,
我现在画出来的图(下图),这个对应关系不太对,我用粉色圈出来了,比如 D1 之前的,Scr那块不应该是period1, D29到D43那块应该是空的才对,D43应该算period 2, D71后面应该是follow-up period....
请大神们帮着看看是什么问题导致的,要怎么解决,拜谢!!!!!!!!!!
我dummy了点数据集,如下:
data dummy;
length avis aper $50;
trtn = 1; legend='0.1A-B';avisitn = -1; avisitn_ = . ;avis = 'Scr'; aper = ''; median = 34;lclm=.;uclm=.;
output;
trtn = 1; legend='0.1A-B'; avisitn = 0; avisitn_ = 0 ;avis = 'D1'; aper = 'Treatment Period 1'; median = 33;lclm=.;uclm=.;
output;
trtn = 2; legend='0.2A-B'; avisitn = 0; avisitn_ = 0 ;avis = 'D1'; aper = 'Treatment Period 1'; median = 26.5;lclm=26;;uclm=27;
output;
trtn = 3; legend='0.3A-B'; avisitn = 0; avisitn_ = 0 ;avis = 'D1'; aper = 'Treatment Period 1'; median = 34;lclm=.;uclm=.;
output;
trtn = 1; legend='0.1A-B'; avisitn = 2; avisitn_ = 2 ;avis = 'D2'; aper = 'Treatment Period 1'; median = 31;lclm=.;uclm=.;
output;
trtn = 2; legend='0.2A-B';avisitn = 2; avisitn_ = 2 ;avis = 'D2'; aper = 'Treatment Period 1'; median = 28.5;lclm=27;;uclm=30;
output;
trtn = 3; legend='0.3A-B';avisitn = 2; avisitn_ = 2 ;avis = 'D2'; aper = 'Treatment Period 1'; median = 32;lclm=.;uclm=.;
output;
trtn = 2; legend='0.2A-B';avisitn = 3; avisitn_ = 3 ;avis = 'D15'; aper = 'Treatment Period 1'; median = 27;lclm=26;uclm=28;
output;
trtn = 1; legend='0.1A-B';avisitn = 4; avisitn_ = 4 ;avis = 'D29'; aper = 'Treatment Period 1'; median = 34;lclm=.;uclm=.;
output;
trtn = 2; legend='0.2A-B'; avisitn = 4; avisitn_ = 4 ;avis = 'D29'; aper = 'Treatment Period 1'; median = 28;lclm=28;uclm=28;
output;
trtn = 1;legend='0.1A-B'; avisitn = 7; avisitn_ = 7 ;avis = 'D44'; aper = 'Treatment Period 2'; median = 37;lclm=.;uclm=.;
output;
trtn = 2; legend='0.2A-B'; avisitn = 7; avisitn_ = 7 ;avis = 'D44'; aper = 'Treatment Period 2'; median = 29;lclm=29;uclm=29;
output;
trtn = 1; legend='0.1A-B';avisitn = 8; avisitn_ = 8 ;avis = 'D57'; aper = 'Treatment Period 2'; median = 26;lclm=.;uclm=.;
output;
trtn = 2; legend='0.2A-B';avisitn = 8; avisitn_ = 8 ;avis = 'D57'; aper = 'Treatment Period 2'; median = 28.5;lclm=27;uclm=30;
output;
trtn = 1; legend='0.1A-B';avisitn = 9; avisitn_ = 9 ;avis = 'D71'; aper = 'Treatment Period 2'; median = 34;lclm=.;uclm=.;
output;
trtn = 2; legend='0.2A-B';avisitn = 9; avisitn_ = 9 ;avis = 'D71'; aper = 'Treatment Period 2'; median = 25.5;lclm=25;uclm=26;
output;
trtn = 1; legend='0.1A-B';avisitn = 12; avisitn_ = 12 ;avis = 'EOS/D127'; aper = 'Follow-up Period'; median = 37;lclm=.;uclm=.;
output;
trtn = 2; legend='0.2A-B';avisitn = 12; avisitn_ = 12 ;avis = 'EOS/D127'; aper = 'Follow-up Period'; median = 17;lclm=.;uclm=.;
output;
run;
%let legend1 = 0.1A-B;
%let legend2 = 0.2A-B;
%let legend3 = 0.3A-B;
ods path(prepend) work.templat(update);
proc template;
define statgraph linechart;
** Begin the graph template;
begingraph / border = false designwidth = 800px designheight = 480px;
** Define attributes to get colour by treatment;
discreteattrmap name = "symbols" / ignorecase = true;
value "&legend1." / markerattrs = (symbol = SquareFilled color = red size=12) lineattrs = (pattern= 1 color = red );
value "&legend2." / markerattrs = (symbol = CircleFilled color = orange size=12) lineattrs = (pattern= 2 color = orange );
value "&legend3." / markerattrs = (symbol = TriangleFilled color = blue size=12) lineattrs = (pattern= 5 color = blue );
enddiscreteattrmap;
discreteattrvar attrvar = groupname attrmap = "symbols" var = legend ;
layout lattice / rowweights=(0.9 0.1);
layout overlay / walldisplay=none cycleattrs=true
/* X axis */
xaxisopts = (
label = "Study Period/Visit"
labelattrs = (family = "arial" size=9pt)
display = (/*label*/ ticks tickvalues line)
type = linear
griddisplay= off
linearopts = (
tickvaluefitpolicy = rotate
/* tickvalueformat = _visx.*/
tickvaluelist = (-1 0 2 3 4 5 7 8 9 11 12 )
viewmin= -1 viewmax=12
tickdisplaylist=('Scr' 'D1' 'D2' 'D15' 'D29' 'D43' 'D44' 'D57' 'D71' /*'D72'*/ 'D85' 'EOS/D127' )
)
tickvalueattrs = (family = "arial" size=8pt)
offsetmin=0.05 offsetmax=0.05
)
/* Y axis */
yaxisopts = (label = "¶m."
labelattrs = (family = "arial" size=9pt)
display = (label ticks tickvalues line)
type = linear
griddisplay= off
linearopts = (
tickvaluefitpolicy = none
viewmin= 15 viewmax= 50
tickValueSequence=(start=15 end= 50 increment= 5 )
)
tickvalueattrs = (family = "arial" size=8pt)
);
/* Line Plot */
seriesplot x=eval(avisitn) y=median / groupdisplay=cluster name='pl' group= groupname index=trtn;
scatterplot x=eval(avisitn) y=median / yerrorlower=lclm yerrorupper=uclm name='ps' group=groupname groupdisplay=cluster index=trtn;
/* Legend */
/* mergedlegend 'ps' 'pl' '1' '2' '3' / */
discretelegend 'ps' /
/*title = "Treatment Groups:"*/
titleattrs = (family = "arial" size=9pt)
valueattrs = (family = "arial" size=9pt)
location = inside
halign = right
valign = top
across=1;
endlayout;
/* BlockPlot e.g. Treament Period 1*/
blockplot x=eval(avisitn_) block=aper /
display=(outline fill values)
filltype=alternate
valuehalign=center
;
endlayout;
entryfootnote "Study Period/Visit" / textattrs=(color=black size=10pt /*weight=bold*/) ;
endgraph;
end;
run;
proc sgrender data = dummy template = linechart;
run;
谢谢大神们!!!!!!!!!!!