gpt4 book ai didi

R ggplot背景图像未显示

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

问题

我想在 map 上画一些箭头。通过一些谷歌搜索,我了解到 annotation_customrasterGrob可以做的事情:

library(ggplot2)
library(png)
library(grid)

img = readPNG('floorplan.png')
g = rasterGrob(img, interpolate = TRUE)

data = read.csv('est_err_structured.csv', header = FALSE)
x1 = data$V1
y1 = data$V2
x2 = data$V3
y2 = data$V4

p = ggplot() +
geom_segment(data = data, mapping = aes(x = x1, y = y1, xend = x2, yend = y2),
arrow = arrow(length = unit(0.2, 'cm'))) +
annotation_custom(g, xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = Inf) +
xlab('x (m)') +
ylab('y (m)') +
theme_bw()

pdf('err_on_map.pdf')
p
dev.off()

但是,当我运行这个脚本时,我只有箭头,但没有背景图像:

enter image description here

依恋
  • est_err_structured.csv
  • floorplan.png enter image description here

  • 引用
  • https://stackoverflow.com/a/16418186
  • https://stackoverflow.com/a/10769839
  • 最佳答案

    您需要多研究一下 ggplot2。例如,映射在 aes 内的变量取自定义为 data 的 data.frame在这个例子中,你必须将它传递给 ggplot .我想 annotation_custom不知何故需要它来获得正确的坐标或尺寸。

    p = ggplot(data) +
    annotation_custom(g, xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = Inf) +
    geom_segment(aes(x = V1, y = V2, xend = V3, yend = V4),
    arrow = arrow(length = unit(0.2, 'cm'))) +
    xlab('x (m)') +
    ylab('y (m)') +
    theme_bw()

    您需要通过情节 widthheightpdf为了使图像与绘图正确对齐。

    resulting plot

    编辑:

    @baptiste 推荐 annotation_raster ,这使得定位更容易:
    ggplot(data) +
    annotation_raster(img, xmin = 50, xmax = 600, ymin = 20, ymax = 400) +
    geom_segment(aes(x = V1, y = V2, xend = V3, yend = V4),
    arrow = arrow(length = unit(0.2, 'cm'))) +
    coord_cartesian(xlim = c(50, 600), ylim = c(20, 400)) +
    xlab('x (m)') +
    ylab('y (m)') +
    theme_bw()

    resulting plot 2

    关于R ggplot背景图像未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38866085/

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