R:如何在函数符号()中使用对数刻度

时间:2014-09-26 17:43:41

标签: r

假设我有一个包含变量a,b,c的数据框

我想使用symbols()函数将bac != 0进行投影,并创建圆圈面积与c成正比的圆圈。使用两个轴的对数刻度。

这就是我所做的:

symbols(a[!c == 0], b[!c == 0], log = "xy",
        inches=1/3, xlim=c(1e2, 1e11), ylim=c(1, 1e9), circles = c)

我得到了:

Error in symbols(a[!c == 0], b[!c ==  : 
 x/y/parameter length mismatch

In addition: Warning messages:
1: "log" is not a graphical parameter 

1 个答案:

答案 0 :(得分:0)

我不确定为什么log = "xy"无效,但您的x/y/parameter问题是因为您的参数circles = c比您的x长和y:即使c为0,它也会包含c。所以这应该有效:

symbols(a[!c == 0], b[!c == 0], log = "xy",
        inches=1/3, xlim=c(1e2, 1e11), ylim=c(1, 1e9), circles = c[c != 0])

作为获取对数比例的解决方法,首先设置一个空图,然后添加符号

plot(NA, NA, type = "n", xlim=c(1e2, 1e11), ylim=c(1, 1e9), log = "xy")
symbols(x = a[!c == 0], y =  b[!c == 0], 
        inches=1/3, circles = c[c != 0], add = T)

另一个注意事项:您说您的数据位于data.frame中,但之后您只使用了调用中的变量。这使您看起来像是attach您的数据框架。如果我是你,我会避免这样做。它节省了一些打字,但是它存在难以发现的错误的风险,你修改了附加的变量或原始的data.frame,它们不再匹配。