楼主: 小沐君
3141 7

[问答] (求助)GTL画图 求问这样的label怎么加? [推广有奖]

  • 6关注
  • 3粉丝

已卖:236份资源

博士生

5%

还不是VIP/贵宾

-

威望
0
论坛币
499 个
通用积分
30.3865
学术水平
8 点
热心指数
18 点
信用等级
8 点
经验
44321 点
帖子
191
精华
0
在线时间
192 小时
注册时间
2016-1-10
最后登录
2023-11-26

楼主
小沐君 发表于 2019-12-8 22:19:02 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
大神们,想请教个问题,


现在想画图,实现下图中的黄色部分的label,
下图是正确的 要画出的图的样子:

0.PNG

现在遇到一点问题,问题在于,要让从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....

1.PNG

请大神们帮着看看是什么问题导致的,要怎么解决,拜谢!!!!!!!!!!

我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;
谢谢大神们!!!!!!!!!!!









二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


沙发
小沐君 发表于 2019-12-9 17:10:05
或者能用别的语句实现也行

藤椅
jg.sas 发表于 2019-12-10 14:00:14
最简单的就是 用GTL里的  drawtext   直接画个文本框
已有 1 人评分热心指数 收起 理由
小沐君 + 1 精彩帖子

总评分: 热心指数 + 1   查看全部评分

板凳
jg.sas 发表于 2019-12-10 14:14:02
BLOKPLOT好像画出来是连续的

grstatgraph.bmp (496.51 KB)

grstatgraph.bmp

报纸
小沐君 发表于 2019-12-11 13:43:35
jg.sas 发表于 2019-12-10 14:00
最简单的就是 用GTL里的  drawtext   直接画个文本框
非常感谢!

我用drawtext 试了一下,出来的是这样的:
2.PNG
请问怎么能让标黄的x 轴的label再往下面移一下呀?现在好像就卡在这儿了 ,我是用entryfootnote加的label

地板
小沐君 发表于 2019-12-11 16:52:23
小沐君 发表于 2019-12-11 13:43
非常感谢!

我用drawtext 试了一下,出来的是这样的:
这个解决了
用的是 在 layout overlay / 后面加  pad = (bottom = 30)  这个就是调节图下方的空白宽度
然后                entryfootnote "Study Period/Visit" / 后面也加 pad = (top = 60) ;

7
小沐君 发表于 2019-12-11 17:20:15
jg.sas 发表于 2019-12-10 14:00
最简单的就是 用GTL里的  drawtext   直接画个文本框
大神请问怎么设置 drawtext文本框里 文字的字体  和 entryfootnote 的字体呀?
谢谢!

8
小沐君 发表于 2019-12-11 22:10:55 来自手机
小沐君 发表于 2019-12-11 17:20
大神请问怎么设置 drawtext文本框里 文字的字体  和 entryfootnote 的字体呀?
谢谢!
已解决,用 family=

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-21 21:13