sgplot图例顺序(默认选项除外)

时间:2015-01-14 04:06:06

标签: graph sas

grouporder的默认选项为data。但是,如果我的数据以Sat开头且不同的颜色分配给SatSun等,那么图例顺序要么以Sat(input data order)开头,要么按字母顺序排列。

但我想强制订单为Mon - Sun。当然,我可以创建另一个变量 myorder 1 for Mon7 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(上面链接中使用的方法),但它没有帮助。

示例数据:

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;

1 个答案:

答案 0 :(得分:1)

PROC FORMAT解决方案很有效。这是一个例子。如果preloadfmt作为一个选项存在,那将会很好,但它似乎并不存在。

基本上我们创建了两种格式 - 一种信息(用于转换' Sun'到1等)和一种格式(用#'太阳'标记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;