楼主: sasjunior
2263 11

如何编写宏来改变条图颜色?? [推广有奖]

  • 2关注
  • 0粉丝

本科生

66%

还不是VIP/贵宾

-

威望
0
论坛币
6 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1640 点
帖子
91
精华
0
在线时间
68 小时
注册时间
2014-11-6
最后登录
2018-7-23

楼主
sasjunior 发表于 2014-12-18 17:57:35 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我想根据数值大小改变条形图条的颜色,下面是我想编的程序,不太对,还请大家帮忙看看,这个怎么实现?

%macro colors(i=,x=);

%if &x>0 %then color=(red blue );
%else color=(blue red );


goptions hsize=5.4in  vsize=1.5in colors=&color ;

axis1 label=none  order=(-100 to 100 by 25);
axis2 label=none value=("");

proc gchart data=rank(where=(group='&i'));
hbar  group /type=sum sumvar=&x
         raxis=axis1 maxis=axis2
         width=5.4
         nostats
                 coutline=red         
         ;
run;
%mend colors;
/*排名图的绘制,条的颜色设置??*/
data rank;
input math chinese  group$;
cards;
75 50   8
25 25   9
50 -25  13
-25 100 10
;
run;
%colors(i=8,x=math)

二维码

扫码加我 拉你入群

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

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

关键词:goptions OUTLINE options Chinese Option color where 如何 程序

沙发
sasjunior 发表于 2014-12-18 17:59:21
这样显示的是  NOTE: 没有从数据集 WORK.RANK 中选择观测。不知道为什么?

%macro colors(i=,x=);

%if &x>0 %then %let color=(red blue );
%else %let  color=(blue red );


goptions hsize=5.4in  vsize=1.5in colors=&color ;

axis1 label=none  order=(-100 to 100 by 25);
axis2 label=none value=("");

proc gchart data=rank(where=(group='&i'));
hbar  group /type=sum sumvar=&x
         raxis=axis1 maxis=axis2
         width=5.4
         nostats
                 coutline=red         
         ;
run;
%mend colors;
/*排名图的绘制,条的颜色设置??*/
data rank;
input math chinese  group$;
cards;
75 50   8
25 25   9
50 -25  13
-25 100 10
;
run;
%colors(i=8,x=math)

藤椅
gssdzc 在职认证  发表于 2014-12-18 18:52:05
给起来  

板凳
sasjunior 发表于 2014-12-23 15:25:21
自己顶起来

报纸
sasjunior 发表于 2015-1-16 22:22:59
绘图颜色不能用宏来改变么?有人知道么

地板
tangliang0905 发表于 2015-1-16 23:40:05 来自手机
sasjunior 发表于 2014-12-18 17:57
我想根据数值大小改变条形图条的颜色,下面是我想编的程序,不太对,还请大家帮忙看看,这个怎么实现?

...
看你的macro,你想要一开始比较math > 0 ?而且如果是数值变量的话,也要用%eval吧

7
sushe1527 发表于 2015-1-17 00:40:12
  1. %macro colors(i=,x=);

  2. %if &x>0 %then %let color=(red blue );
  3. %else %let  color=(blue red );


  4. goptions hsize=5.4in  vsize=1.5in colors=&color ;

  5. axis1 label=none  order=(-100 to 100 by 25);
  6. axis2 label=none value=("");

  7. proc gchart data=rank(where=(group=&i));
  8. hbar  group /type=sum sumvar=&x
  9.          raxis=axis1 maxis=axis2
  10.          width=5.4
  11.          nostats
  12.                  coutline=red         
  13.          ;
  14. run;
  15. %mend colors;
  16. /*排名图的绘制,条的颜色设置??*/
  17. data rank;
  18. input math chinese  group;
  19. cards;
  20. 75 50   8
  21. 25 25   9
  22. 50 -25  13
  23. -25 100 10
  24. ;
  25. run;
  26. %colors(i=8,x=math)
复制代码

8
sasjunior 发表于 2015-1-26 09:53:15
sushe1527 发表于 2015-1-17 00:40
复制了一遍我的code?

9
sasjunior 发表于 2015-1-26 10:03:20
tangliang0905 发表于 2015-1-16 23:40
看你的macro,你想要一开始比较math > 0 ?而且如果是数值变量的话,也要用%eval吧
您好,我查了下%eval的用法,这个是用于给变量运算赋值的,如%let a=%eval(1+2);,我这里的X本身是数据集里的数据,不需要再赋值了吧?还请您说的具体些

10
sasjunior 发表于 2015-1-26 10:04:10
tangliang0905 发表于 2015-1-16 23:40
看你的macro,你想要一开始比较math > 0 ?而且如果是数值变量的话,也要用%eval吧
您好,我查了下%eval的用法,这个是用于给变量运算赋值的,如%let a=%eval(1+2);,我这里的X本身是数据集里的数据,不需要再赋值了吧?还请您说的具体些,谢谢!

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-5 19:48