R-package beeswarm 生成相同的 x 坐标
R-package beeswarm generates same x-coordinates
我正在编写一个脚本,我需要在不立即绘制的情况下计算蜂群图的坐标。当我使用 beeswarm 时,我得到的 x 坐标没有蜂群,并且或多或少具有相同的值:
但是如果我再次生成相同的图,它就会正确地蜂拥而至:
如果我使用 dev.off()
我又不会蜂拥而至:
我使用的代码:
n <- 250
df = data.frame(x = floor(runif(n, 0, 5)),
y = rnorm(n = n, mean = 500, sd = 100))
#Plot 1:
A = with(df, beeswarm(y ~ x, do.plot = F))
plot(x = A$x, y=A$y)
#Plot 2:
A = with(df, beeswarm(y ~ x, do.plot = F))
plot(x = A$x, y=A$y)
dev.off()
#Plot 3:
A = with(df, beeswarm(y ~ x, do.plot = F))
plot(x = A$x, y=A$y)
在我看来,beeswarm 使用类似于当前绘图参数(或无论如何调用)的东西来进行蜂群,因此当绘图未显示时会窒息。我曾尝试使用 beeswarm 参数,例如 spacing、breaks、corral、corralWidth、priority 和 xlim,但这并没有什么不同。仅供参考:如果 do.plot
设置为 TRUE,则 x 坐标计算正确,但这没有帮助,因为我不想立即绘制。
非常感谢任何提示或意见!
你是对的; beeswarm 使用当前绘图参数来计算点之间要离开的 space 数量。似乎设置 "do.plot=FALSE" 并没有达到预期的效果,我不确定为什么要包含此参数。
如果您想手动控制参数,可以使用函数swarmx
或swarmy
代替。这些功能必须分别应用于每个组,例如
dfsplitswarmed <- by(df, df$x, function(aa) swarmx(aa$x, aa$y, xsize = 0.075, ysize = 7.5, cex = 1, log = ""))
dfswarmed <- do.call(rbind, dfsplitswarmed)
plot(dfswarmed)
在这种情况下,我根据函数为该特定数据集默认的值设置 xsize 和 ysize 值。如果您可以找到一组适用于您的数据的 xsize/ysize 值,则此方法可能适合您。
否则,也许更简单的方法是保留 do.plot=TRUE,然后丢弃绘图。
我正在编写一个脚本,我需要在不立即绘制的情况下计算蜂群图的坐标。当我使用 beeswarm 时,我得到的 x 坐标没有蜂群,并且或多或少具有相同的值:
但是如果我再次生成相同的图,它就会正确地蜂拥而至:
如果我使用 dev.off()
我又不会蜂拥而至:
我使用的代码:
n <- 250
df = data.frame(x = floor(runif(n, 0, 5)),
y = rnorm(n = n, mean = 500, sd = 100))
#Plot 1:
A = with(df, beeswarm(y ~ x, do.plot = F))
plot(x = A$x, y=A$y)
#Plot 2:
A = with(df, beeswarm(y ~ x, do.plot = F))
plot(x = A$x, y=A$y)
dev.off()
#Plot 3:
A = with(df, beeswarm(y ~ x, do.plot = F))
plot(x = A$x, y=A$y)
在我看来,beeswarm 使用类似于当前绘图参数(或无论如何调用)的东西来进行蜂群,因此当绘图未显示时会窒息。我曾尝试使用 beeswarm 参数,例如 spacing、breaks、corral、corralWidth、priority 和 xlim,但这并没有什么不同。仅供参考:如果 do.plot
设置为 TRUE,则 x 坐标计算正确,但这没有帮助,因为我不想立即绘制。
非常感谢任何提示或意见!
你是对的; beeswarm 使用当前绘图参数来计算点之间要离开的 space 数量。似乎设置 "do.plot=FALSE" 并没有达到预期的效果,我不确定为什么要包含此参数。
如果您想手动控制参数,可以使用函数swarmx
或swarmy
代替。这些功能必须分别应用于每个组,例如
dfsplitswarmed <- by(df, df$x, function(aa) swarmx(aa$x, aa$y, xsize = 0.075, ysize = 7.5, cex = 1, log = ""))
dfswarmed <- do.call(rbind, dfsplitswarmed)
plot(dfswarmed)
在这种情况下,我根据函数为该特定数据集默认的值设置 xsize 和 ysize 值。如果您可以找到一组适用于您的数据的 xsize/ysize 值,则此方法可能适合您。
否则,也许更简单的方法是保留 do.plot=TRUE,然后丢弃绘图。