楼主: pinggu2688
4112 17

[实际应用] 绘图中轴刻度的定义 [推广有奖]

11
tj0412ymy 发表于 2011-7-27 15:04:42
qzlvyh 发表于 2011-7-27 14:09
axis1 minor=(number=1) value=( "0" "" "" "" "4" "" "" "" "8" "" "" "" "12" "13")  order=( 0 to 13 by 1 );
这种方法只能适应于数据量较小的情况,假如现在分割点是40,80,120,就很麻烦了。可以用Macro去做得更灵活一些。

12
tj0412ymy 发表于 2011-7-27 15:37:54
给出一个灵活度较高的宏代码:
  1. options symbolgen;
  2. %let n=13;
  3. %let n1=%eval(&n.-1);
  4. %let m=4;
  5. data one;
  6. input y x;
  7. cards;
  8. 2 0
  9. 3 7
  10. 4 9
  11. 2 13
  12. 6 8
  13. 5 2
  14. ;
  15. run;

  16. %macro test();
  17. data tick;
  18. do i=1 to &n;
  19. mode=mod(i,&m.);
  20. if mode=0 then tick=put(i,2.);
  21. else tick=' ';
  22. output;
  23. end;
  24. run;
  25. proc sql noprint;
  26. select  tick INTO : tick1 -:tick&n1
  27. from tick
  28. ;
  29. quit;

  30. axis1 minor=(number=1) label=none minor=none value=('0' %do j=1 %to &n1; "&&tick&j." %end; "&n") ;
  31. proc gplot data=one;
  32. plot y*x/haxis=axis1;
  33. run;quit;
  34. %mend;
  35. %test();
复制代码

13
pinggu2688 发表于 2011-7-28 00:24:47
这确实是个难题
比如轴范围order=(-13 to 15  by  4,16),以及如何去掉不需要显示的刻线问题,期待高手解答

14
pinggu2688 发表于 2011-7-28 02:52:46
关键是不需要显示刻度值的刻线如何去掉,比如刻线在1,2,3的时候不需要显示,如何去掉刻线,或者刻线高度如何把不需要显示的刻线(其他)高度设置为0,需要显示的刻线(0,4,8,12,13)高度设置为1?

15
honghejing 发表于 2011-7-28 14:45:01
这个就比较困难了,你们是做什么的?要求这么高?你还不如用matlab去做。

16
yugao1986 发表于 2011-7-28 16:04:37
这个表述我不懂了,能够画个图吗? 13# pinggu2688
三人行必有我师

17
guoluo 发表于 2011-7-28 21:34:22
画散点图为啥非用gplot,用sgplot不行吗
  1. proc sgplot data=one;
  2. scatter y=y x=x;
  3. xaxis values=(0 to 12 by 4 13);
  4. run;
复制代码

18
zhaoping603 发表于 2011-7-29 10:31:02
问一下,得到的图怎么像乱码呢,而且在我这还是用其他程序打开的。谢谢指点。 16# guoluo

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-2 18:29