我想知道是否可以在与轴(我的示例中为米)相同的单位中指定geom_points的点半径。我有库存数据,其中树的采样概率依赖于单个半径。
# reading some example data
dat <- read.table(header=TRUE, text="x y radius
0 0 7.5
10 0 5.5
20 0 7
30 0 9")
dat
#> x y radius
#> 1 0 0 7.5
#> 2 10 0 5.5
#> 3 20 0 7.0
#> 4 30 0 9.0
因此,我需要精确地绘制树特定半径以直观地解释该方法。我发现了较旧的问题(比如这个四年前的讨论:geom_point control radius exactly rather than scaling it),同样的问题最终没有得到解决。我想知道是否有更近期的方法。我玩了scale_radius和scale_size_area,但没有成功。这是我试过的代码
ggplot(data = dat, aes(x = x, y = y, color = factor(dat$Nutz), size = radius * 2)) +
geom_point() + scale_radius(name = NULL, range = c(0, 50))
这给了我正在寻找的图形包
plot(dat$x, dat$y, asp = 1, xlim = c(0, 50),ylim = c(0, 50))
symbols(dat$x, dat$y, circles = dat$radius, inches = FALSE, add = TRUE)
有没有人有线索?一切顺利,凯
答案 0 :(得分:2)
像这样,添加ggforce包,
library(ggforce) # devtools::install_github("thomasp85/ggforce")
ggplot() + geom_circle(aes(x0=x, y0=y, r= radius), data= dat) + coord_fixed() +
scale_x_continuous(minor_breaks = seq(-10, 40, 1), lim = c(-10, 40))
如果有人需要做同样的事情,但有省略号,可以使用geom_ellipsis()
,
ggplot(dat, aes(x0 = x, y0 = y, a = radius, b = radius, angle = 0)) +
geom_ellipsis() + geom_point(aes(x, y), size = .5) + coord_fixed()
这是另一种解决方法选项,
ggplot(data = dat, aes(x = x, y = y, size = radius)) +
geom_point(shape=1, show.legend=F) +
scale_size(range = range(dat$radius)*10) +
scale_x_continuous(minor_breaks = seq(-10, 40, 1), lim = c(-10, 40))
答案 1 :(得分:0)
在Erics提示之后,我找到了使用geom_circle
的另一个解决方案,它是ggforce
最近CRAN版本的一部分,并且需要更少的参数。
ggplot(dat, aes(x0 = x, y0 = y, r = radius)) +
geom_circle(show.legend = FALSE) +
geom_point(aes(x, y), size = .5, show.legend = FALSE) +
coord_fixed()