gpt4 book ai didi

r - 如何使用 R 和 ggplot2 使 annotation_custom() grob 与 scale_y_reverse() 一起显示?

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

我是新来的 ggplot2和 R 相对较新。我可以让图片出现在情节上,我可以让 y 轴反向缩放,但我不知道如何同时做到这两点。例如:

library(ggplot2)

y=c(1,2,3)
x=c(0,0,0)
d=data.frame(x=x, y=y)

#following http://stackoverflow.com/questions/9917049/inserting-an-image-to-ggplot2/9917684#9917684
library(png)
library(grid)
img <- readPNG(system.file("img", "Rlogo.png", package="png"))
g <- rasterGrob(img, interpolate=TRUE)

#these work fine - either reversing scale, or adding custom annotation
ggplot(d, aes(x, y)) + geom_point()
ggplot(d, aes(x, y)) + geom_point() + scale_y_reverse()
ggplot(d, aes(x, y)) + geom_point() + annotation_custom(g, xmin=.23, xmax=.27, ymin=1.8, ymax=2.2)

#these don't...combining both reverse scale and custom annotation
ggplot(d, aes(x, y)) + geom_point() + annotation_custom(g, xmin=.23, xmax=.27, ymin=1.8, ymax=2.2) + scale_y_reverse()
ggplot(d, aes(x, y)) + geom_point() + annotation_custom(g, xmin=.23, xmax=.27, ymin=2.2, ymax=1.8) + scale_y_reverse()

我确定我错过了一些非常基本的东西。我应该从哪里开始寻找让我的小图形显示在反向比例图上,并更好地理解引擎盖下的事情?

对评论的澄清:
上面的例子是我试图简化我遇到的问题。我不知道这是否重要,但我不仅仅是试图在静态图像上叠加一些数据。我实际上想根据绘图中的数据将图像放置在绘图的某个位置。但是,当轴刻度反转时,我似乎无法做到这一点。而且,事实证明,当比例反转时,我什至无法将图像放在绝对位置,所以这就是我发布的代码示例。

最佳答案

scale_y_reverse ,你需要在annotation_custom里面设置y坐标对他们不利。

library(ggplot2)
y=c(1,2,3)
x=c(0,0,0)
d=data.frame(x=x, y=y)


library(png)
library(grid)
img <- readPNG(system.file("img", "Rlogo.png", package="png"))
g <- rasterGrob(img, interpolate=TRUE)

ggplot(d, aes(x, y)) + geom_point() +
annotation_custom(g, xmin=.20, xmax=.30, ymin=-2.2, ymax=-1.7) +
scale_y_reverse()

enter image description here

为什么是负面的? y 坐标是原始坐标的负数。看看这个:
(p = ggplot(d, aes(x=x, y=y)) + geom_point() + scale_y_reverse())
y.axis.limits = ggplot_build(p)$layout$panel_params[[1]][["y.range"]]
y.axis.limits

或者,在 rasterGrob 内以相对单位设置 grob 的坐标和大小.
g <- rasterGrob(img, x = .75, y = .5, height = .1, width = .2, interpolate=TRUE)

ggplot(d, aes(x, y)) + geom_point() +
annotation_custom(g) +
scale_y_reverse()

关于r - 如何使用 R 和 ggplot2 使 annotation_custom() grob 与 scale_y_reverse() 一起显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33849672/

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