楼主: webgu
5055 20

[问答] SAS不能画四象限图吗? [推广有奖]

贵宾

学科带头人

95%

还不是VIP/贵宾

-

TA的文库  其他...

Python与统计

SAS与统计

威望
2
论坛币
102554 个
通用积分
3.6187
学术水平
475 点
热心指数
493 点
信用等级
434 点
经验
62375 点
帖子
1557
精华
4
在线时间
2201 小时
注册时间
2009-5-4
最后登录
2024-4-23

初级学术勋章 初级热心勋章 初级信用勋章 中级学术勋章 中级热心勋章 中级信用勋章

20论坛币
SAS 画图默认的好像都在一象限内,如下图:
坐标系就是y>0,x>0的部分。

PIC1.png

如果现在想要画带四个象限的图,坐标原点是(0,0),但是X,Y轴都有小于0的区域。如: image004.jpg

怎么操作?难道 非用ANNOTATE ?

如下面的例子:

data demo;
  do x=-10 to 10 ;
    y=2*x;
        output;
end;
run;

goptions reset=all;
axis1 order=(-13 to 13 by 1);
axis2 order=(-23 to 23 by 1);
symbol  c=red i=join;

proc gplot;
  plot y*x/ haxis=axis1 vaxis=axis2;
run;



虽然把x,y的刻度延伸了,但还是只是在第一象限内。
想到过用ORIGIN(),结果只是将整个坐标的起始位置平移。

各位,有什么好的方法不?



pic2.png (16.83 KB)

pic2.png

关键词:四象限图 annotate goptions options Origin 坐标系
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365
沙发
hopewell 发表于 2013-1-14 20:54:28 |只看作者 |坛友微信交流群
  1. data demo;
  2.     do x=-10 to 10;
  3.         y=2*x;
  4.         output;
  5.     end;
  6. run;
  7. data anno;
  8.     length function $8;
  9.     retain xsys '2' ysys '2' hsys '3' style 'arial' when 'a';
  10.     do x=-13 to 13;
  11.         if x ne 0 then do;
  12.             function='move'; y=0; output;
  13.             function='draw'; y=-0.2; size=0.1; output;
  14.             function='label'; text=put(x,best. -l); size=2; position='e'; output;
  15.         end;
  16.     end;
  17.     do y=-23 to 23;
  18.         if y ne 0 then do;
  19.             function='move'; x=0; output;
  20.             function='draw'; x=-0.05; size=0.1; output;
  21.             function='label'; x=-0.1; text=put(y,best. -l); size=2; position='4'; output;
  22.         end;
  23.     end;
  24. run;
  25. goptions reset=all;
  26. axis1 order=(-13 to 13 by 1) offset=(1.5,1.5) label=none value=none major=none minor=none;
  27. axis2 order=(-23 to 23 by 1) offset=(0.5,0.5) label=none value=none major=none minor=none;
  28. symbol c=red i=join;
  29. proc gplot data=demo anno=anno;
  30.     plot x*y / haxis=axis1 vaxis=axis2 href=0 vref=0;
  31. run;
  32. quit;
复制代码

demo.gif (3.58 KB)

demo.gif

已有 2 人评分学术水平 热心指数 信用等级 收起 理由
chiaolee + 1 + 1 + 1 观点有启发, 受教了
webgu + 1 + 1 + 1 精彩,值得学习,谢谢hopewell大哥。

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

观钓颇逾垂钓趣 种花何问看花谁

使用道具

藤椅
Imasasor 发表于 2013-1-14 23:39:27 |只看作者 |坛友微信交流群
晕,我对画图也不太懂,期待高手
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

使用道具

板凳
pobel 在职认证  发表于 2013-1-15 08:22:33 |只看作者 |坛友微信交流群
没画过四象限的图,等待高手赐教。
和谐拯救危机

使用道具

报纸
webgu 发表于 2013-1-15 08:27:30 |只看作者 |坛友微信交流群
pobel 发表于 2013-1-15 08:22
没画过四象限的图,等待高手赐教。
感觉SAS的画布的设置就是只给那一个角,机制上就决定了,想画出四象限图 ,不是那么容易实现?
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

地板
webgu 发表于 2013-1-15 08:28:28 |只看作者 |坛友微信交流群
Imasasor 发表于 2013-1-14 23:39
晕,我对画图也不太懂,期待高手
我一开始以为很容易,用几个OPTIONS就能解决。折腾了一翻,没找到。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

7
pobel 在职认证  发表于 2013-1-15 08:34:32 |只看作者 |坛友微信交流群
webgu 发表于 2013-1-15 08:27
感觉SAS的画布的设置就是只给那一个角,机制上就决定了,想画出四象限图 ,不是那么容易实现?
SAS作图方面很少用。

我感觉SAS/GRAPH应该还是以数据集,变量为出发点的,而不是坐标轴上的x,y值,所以(-1,-3)和(3,1)对SAS来说只是数据集中的两条记录所确定的两个点,或许SAS不会从正负的角度去判断数值型变量的值。
和谐拯救危机

使用道具

8
playmore 发表于 2013-1-15 09:18:34 |只看作者 |坛友微信交流群
我觉得除非做成一个模版,每天自动运行这种
其他情况都可以把SAS得到的表导出
用其他软件做图
推荐用OriginLab
做图很规范,也还很方便
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

使用道具

9
webgu 发表于 2013-1-15 09:21:37 |只看作者 |坛友微信交流群
pobel 发表于 2013-1-15 08:34
SAS作图方面很少用。

我感觉SAS/GRAPH应该还是以数据集,变量为出发点的,而不是坐标轴上的x,y值,所 ...
SAS 作图确实麻烦。我也对其语法心有畏惧。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

10
webgu 发表于 2013-1-15 09:22:45 |只看作者 |坛友微信交流群
playmore 发表于 2013-1-15 09:18
我觉得除非做成一个模版,每天自动运行这种
其他情况都可以把SAS得到的表导出
用其他软件做图
OriginLab?不太了解。Prism倒是听过。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-31 22:26