楼主: fanny花
8625 2

半对数线图在sas gplot的实现 [推广有奖]

  • 1关注
  • 0粉丝

初中生

19%

还不是VIP/贵宾

-

威望
0
论坛币
9 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
52 点
帖子
6
精华
0
在线时间
16 小时
注册时间
2012-2-15
最后登录
2015-1-12

楼主
fanny花 发表于 2013-1-9 22:11:41 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有一个资料需要描绘半对数线图,请问在sas里面是怎样实现呢
  1. data aa;
  2. input year x y@@;
  3. x1=log(x);y1=log(y);
  4. cards;
  5. 1950 31.3 174.5 1952 22.4 157.1
  6. 1954 18.0 142.0 1956 9.2 127.2
  7. 1958 5.0 97.7 1960 3.8 71.3
  8. 1962 1.6 59.2 1964 0.8 46.0
  9. 1966 0.3 37.5
  10. ;
  11. run;

  12. symbol1 v=diamond c=gold i=jion;
  13. symbol2 v=star c=red i=jion;

  14. proc gplot ;
  15. plot x*year y*year/overlay;
  16. plot x1*year y1*year/overlay;
  17. run;
复制代码
上面的程序出来的图是纵坐标是-2到6,如图,
QQ截图20130109215447.jpg

可是半对数图不是要求纵坐标是0.1,1,10,100这样的值吗?而且是没有零点的,根据其纵坐标是对数尺度,如果直接将纵坐标设为0.1,1,10,100,1000,再用原始x,y去画图,

  1. symbol1 v=diamond c=gold i=jion;
  2. symbol2 v=star c=red i=jion;

  3. axis1 label=(angle=90 'siwanglv') order=0.01 0.1 1 10 100 1000;
  4. axis2 label=('year') order=1950 to 1966 by 2;

  5. proc gplot ;
  6. plot x*year y*year/overlay vaxis=axis1 haxis=axis2;
  7. run;
复制代码

结果如图,
figure.jpg


两个图的趋势有那么点不同,那么从统计上来说,哪个才是正确的呢?

在线求大神解答。。。
二维码

扫码加我 拉你入群

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

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

关键词:gplot plot GPL Overlay Diamond diamond star 程序 资料

沙发
遇女心惊 发表于 2013-1-9 22:59:40
妹子,应该结合你的两个思路来作图。
纵坐标是要取对数,想以0.1,1,10,100表示,你应该用函数x1=log10(x);y1=log10(y); 而不是log().

现在有两种方法供你选择:
方法1:用正确的对数函数求出x1/y1后,纵坐标应该是-1,0,1,2,3,你需要对axis1进行处理。使其分别显示0.1,1,10,100,1000即可。

方法2:不需要求对数,直接通过对坐标轴进行对数处理作图,加上如下红体字内容:
axis1 logbase=10 logstyle=expand label=(angle=90 'siwanglv'); 即可。

比较两种方法,最后的图是一样的,也是正确的图。

试试吧,花花~
if you have any question, please let me know.

藤椅
fanny花 发表于 2013-1-9 23:22:06
遇女心惊 发表于 2013-1-9 22:59
妹子,应该结合你的两个思路来作图。
纵坐标是要取对数,想以0.1,1,10,100表示,你应该用函数x1=log10(x); ...
强大的哥哥,灰常感谢帮忙,小妹真是佩服!学习了,私聊~~

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

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