sgplot 图例顺序(默认选项除外)
sgplot legend order (except default options)
grouporder
的默认选项是 data
。但是,如果我的数据以 Sat
开头,并且将不同的颜色分配给 Sat
、Sun
等,那么图例顺序要么以 Sat(input data order)
开头,要么以字母顺序开头。
但我想强制顺序为Mon - Sun
。当然我可以创建另一个变量 myorder 1 for Mon
和 7 for Sun
然后按 myorder 分组。但是通过这种方式,图例显示 1,2,3..
而不是 Mon Tue ...
示例数据:
Date DayofWeek myorder Sale
3Jan15 Sat 6 20.1
4Jan15 Sun 7 31.1
5Jan15 Mon 1 19.1
This可能是一个解决方案
但是我试了proc format
(上面使用的方法link)但是没有用。
示例数据:
data _t;
input day dow $ sale;
cards;
1 Thu 22.0
2 Fri 23.1
3 Sat 28.2
4 Sun 30.0
5 Mon 21.1
6 Tue 18.2
7 Wed 16.9
8 Thu 18.0
9 Fri 27.9
10 Sat 27.2
11 Sun 13.9
12 Mon 16.0
13 Tue 18.0
;
run;
PROC FORMAT 解决方案有效。这是一个例子。如果 preloadfmt
在这里作为一个选项存在就好了,但它似乎没有。
基本上我们创建了两种格式 - 一种信息格式(将 'Sun' 转换为 1 等)和一种格式(用 'Sun' 标记 1)。我给他们取了同样的名字,他们不一定是。
proc format;
value dayorder
1='Sun'
2='Mon'
3='Tue'
4='Wed'
5='Thu'
6='Fri'
7='Sat'
;
invalue dayorder
'Sun'=1
'Mon'=2
'Tue'=3
'Wed'=4
'Thu'=5
'Fri'=6
'Sat'=7
;
quit;
data _t2;
set _t;
dow_order = input(dow,dayorder.);
format dow_order dayorder.;
run;
proc sgplot data=_t2;
vbar day/group=dow_order response=sale grouporder=ascending;
run;
grouporder
的默认选项是 data
。但是,如果我的数据以 Sat
开头,并且将不同的颜色分配给 Sat
、Sun
等,那么图例顺序要么以 Sat(input data order)
开头,要么以字母顺序开头。
但我想强制顺序为Mon - Sun
。当然我可以创建另一个变量 myorder 1 for Mon
和 7 for Sun
然后按 myorder 分组。但是通过这种方式,图例显示 1,2,3..
而不是 Mon Tue ...
示例数据:
Date DayofWeek myorder Sale
3Jan15 Sat 6 20.1
4Jan15 Sun 7 31.1
5Jan15 Mon 1 19.1
This可能是一个解决方案
但是我试了proc format
(上面使用的方法link)但是没有用。
示例数据:
data _t;
input day dow $ sale;
cards;
1 Thu 22.0
2 Fri 23.1
3 Sat 28.2
4 Sun 30.0
5 Mon 21.1
6 Tue 18.2
7 Wed 16.9
8 Thu 18.0
9 Fri 27.9
10 Sat 27.2
11 Sun 13.9
12 Mon 16.0
13 Tue 18.0
;
run;
PROC FORMAT 解决方案有效。这是一个例子。如果 preloadfmt
在这里作为一个选项存在就好了,但它似乎没有。
基本上我们创建了两种格式 - 一种信息格式(将 'Sun' 转换为 1 等)和一种格式(用 'Sun' 标记 1)。我给他们取了同样的名字,他们不一定是。
proc format;
value dayorder
1='Sun'
2='Mon'
3='Tue'
4='Wed'
5='Thu'
6='Fri'
7='Sat'
;
invalue dayorder
'Sun'=1
'Mon'=2
'Tue'=3
'Wed'=4
'Thu'=5
'Fri'=6
'Sat'=7
;
quit;
data _t2;
set _t;
dow_order = input(dow,dayorder.);
format dow_order dayorder.;
run;
proc sgplot data=_t2;
vbar day/group=dow_order response=sale grouporder=ascending;
run;