gpt4 book ai didi

r - 您可以轻松地在 ggplot2 的顶部/右侧绘制地毯/轴吗?

转载 作者:行者123 更新时间:2023-12-04 17:12:58 24 4
gpt4 key购买 nike

下面的例子没有内在的意义......它只是为了展示标签、地毯等的特定位置,并且代表[编辑](a)我正在从事的一个我无法讨论的更大的项目细节,(b) 需要使用 ggplot,以及 (c) 需要类似于下面给出的图中所反射(reflect)的图形的视觉特征。

是否可以直接使用 ggplot2 或使用网格重新创建以下内容?

x <- rnorm(20)
y <- rnorm(20)

plot(x, y, axes=F, xlab="", ylab="")

axis(side = 1, at = round(mean(x), 2))
axis(side = 2, at = round(mean(y), 2))

axis(side = 3, at = round( range(x), 2 ))
axis(side = 4, at = round( range(y), 2 ))

rug(x, side=3)
rug(y, side=4)

请参阅下面发布的解决方案(Chase 的、修改的和基于 Hadley 的 Geom 代码的解决方案)

最佳答案

我会回应@Gavin 的问题,但为了摆弄,这应该会让你非常接近:

qplot(x,y) + 
geom_segment(data = data.frame(x), aes(x = x, y = max(x) - .05, xend = x, yend = max(x))) + #x-rug
geom_segment(data = data.frame(x), aes(x = min(x), y = max(x), xend = max(x), yend = max(x))) + #x-rug
geom_segment(data = data.frame(y), aes(x = max(x) + .05, y = y, xend = max(x), yend = y)) + #y-rug
geom_segment(data = data.frame(y), aes(x = max(x) + .05, y = min(y), xend = max(x) + .05, yend = max(y) )) + #y-rug
scale_x_continuous(breaks = NA) +
scale_y_continuous(breaks = NA) +
xlab(NULL) +
ylab(NULL) +
geom_text(aes(label = round(mean(x),2), x = mean(x), y = min(y) - .2), size = 4) +
geom_text(aes(label = round(mean(y),2), x = min(x) - .2, y = mean(y)), size = 4) +
geom_text(aes(label = round(max(x),2), x = max(x) + .2, y = max(y) + .2), size = 4)
#...add other text labels to your heart's desire.

如果您不需要将地毯放在顶部和右侧,您可以利用 geom_rug() .我不知道有什么简单的方法可以将 x 或 y 轴从它们的预定义位置“移开”。像这样的东西可能更容易消化/使用:
df <- data.frame(x,y)
qplot(x,y, data = df, geom = c("point", "rug")) # + ...any additional geom's here

关于r - 您可以轻松地在 ggplot2 的顶部/右侧绘制地毯/轴吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4867597/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com