我正在尝试生成一个“正方形”散点图,其中两个轴都是对数(基数为10)。基本代码是:
goptions reset=all device=activex;
axis1 logbase=10 length=15cm;
axis2 logbase=10 length=15cm;
symbol color=bigb value=circle height=0.5;
proc gplot data=source uniform;
title 'blah blah';
plot var1*var2 / haxis=axis1 vaxis=axis2;
where type = 'chosen';
run;
quit;
var1包含跨越> 0到1,000,000的值。 var2包含跨越> 0到10,000,000的值。
我希望两个轴都达到10,000,000,同时保持对数刻度。我已经尝试了一切,但没有运气。我认为axis语句中的order =选项会有所帮助,
axis1 logbase=10 length=15cm order=(1 to 10000000);
但是我在日志中不断收到列表超过某个最大值的警告。
非常感谢任何帮助!!
答案 0 :(得分:1)
为您提供一些建议。
1)在AXIS语句中使用LOGBASE = 10时,需要指定实际值而不是FROM和TO。像这样:
axis1 logbase=10 length=10cm order=(1 10 100 1000 10000 100000 1000000 10000000);
2)我经常遇到轴上有大数字的问题,并且会创建一个自定义格式,以便在图表上显示数字为10的幂。然后将此格式应用于PROC GPLOT中的VAR1和VAR2。
proc format;
value power
1 = '10^0'
10 = '10^1'
100 = '10^2'
1000 = '10^3'
10000 = '10^4'
100000 = '10^5'
1000000 = '10^6'
10000000 = '10^7'
;
run;
3)当我尝试运行您的代码时,y轴将在图表的顶部被截止。而且我认为这是因为你选择的驱动程序。我通过以下方式调查了ACTIVEX驱动程序:
proc gdevice c=sashelp.devices ;
list _all_;
run;
当GDEVICE窗口出现时,在ACTIVEX前面输入“S”。这将显示有关此特定驱动程序的详细信息。根据细节,ACTIVEX的XMAX = 8.333英寸(或18.33厘米),YMAX = 6.25英寸(或13.75厘米)。这就是为什么y轴被切断的原因。考虑将AXIS语句上的LENGTH选项更改为10cm或更小。
希望这有帮助!