假设我有一个包含变量a,b,c的数据框
我想使用symbols()
函数将b
与a
对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)
我得到了:
Error in symbols(a[!c == 0], b[!c == :
x/y/parameter length mismatch
In addition: Warning messages:
1: "log" is not a graphical parameter
答案 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,它们不再匹配。