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

R:如何在函数符号()中使用对数刻度,r,R,假设我有一个包含变量a,b,c的数据框 我想使用符号函数来绘制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/par

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

我想使用符号函数来绘制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 
我不知道为什么log=xy不起作用,但是x/y/参数问题是因为参数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中,但随后您只使用调用中的变量。这使它看起来像你已经附加了你的数据框。如果我是你,我会避免的。它节省了一些输入,但在修改附加变量或原始data.frame并且它们不再匹配的情况下,很难找到bug