R:geom_图像因坐标_固定而变形
我正在尝试将图像放置到需要固定坐标的绘图上(x、y值是GPS坐标,我希望地图能够正确缩放)。如果x和y的范围不匹配,则图像将变平 我不知道这是一个bug还是期望的行为。有没有办法使图像具有原始纵横比?我唯一想到的是把看不见的点放在角落里,使情节再次成为正方形 简单示例如下所示:R:geom_图像因坐标_固定而变形,r,ggplot2,ggimage,R,Ggplot2,Ggimage,我正在尝试将图像放置到需要固定坐标的绘图上(x、y值是GPS坐标,我希望地图能够正确缩放)。如果x和y的范围不匹配,则图像将变平 我不知道这是一个bug还是期望的行为。有没有办法使图像具有原始纵横比?我唯一想到的是把看不见的点放在角落里,使情节再次成为正方形 简单示例如下所示: require(tidyverse) require(ggimage) plot_image <- function(x_size, y_size) { dta_points <- crossing(
require(tidyverse)
require(ggimage)
plot_image <- function(x_size, y_size) {
dta_points <- crossing(x = c(-x_size, x_size), y = c(-y_size, y_size))
dta_img <- data_frame(x = 0, y = 0, image = 'https://www.r-project.org/logo/Rlogo.png')
ggplot(NULL, aes(x, y)) +
geom_point(data = dta_points) +
geom_image(data = dta_img, aes(image = image), size = 1) +
ggtitle(paste0('x_size: ', x_size, ', y_size: ', y_size)) +
coord_fixed()
}
plot_image(x_size = 1, y_size = 1)
plot_image(x_size = 0.1, y_size = 1)
plot_image(x_size = 1, y_size = 0.1)
require(tidyverse)
需要(ggimage)
plot_image您可以在annotation_custom
中调整xmin/xmax/ymin/ymax
参数,将图像放置在任意位置,同时确定其纵横比:
library(ggplot2)
library(png)
library(grid)
download.file("https://www.r-project.org/logo/Rlogo.png", 'Rlogo.png', mode = 'wb')
image <- readPNG("Rlogo.png")
logo <- rasterGrob(image, interpolate = TRUE)
ggplot() +
annotation_custom(logo, xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = Inf)
跟进您的评论:
您只需指定x
和y
美学,以保持原始纵横比,尺寸
将有助于缩放(如果需要):
library(ggimage)
dta_img <- data.frame(x = 6, y = 3, image = 'https://www.r-project.org/logo/Rlogo.png')
ggplot(iris, aes(x = Sepal.Length, y = Petal.Length)) +
geom_image(data = dta_img, aes(x, y, image = image), size = 0.1) +
geom_point()
库(ggimage)
dta_img您可以在annotation_custom
中调整xmin/xmax/ymin/ymax
参数,将图像放置在任意位置,同时确定其纵横比:
library(ggplot2)
library(png)
library(grid)
download.file("https://www.r-project.org/logo/Rlogo.png", 'Rlogo.png', mode = 'wb')
image <- readPNG("Rlogo.png")
logo <- rasterGrob(image, interpolate = TRUE)
ggplot() +
annotation_custom(logo, xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = Inf)
跟进您的评论:
您只需指定x
和y
美学,以保持原始纵横比,尺寸
将有助于缩放(如果需要):
library(ggimage)
dta_img <- data.frame(x = 6, y = 3, image = 'https://www.r-project.org/logo/Rlogo.png')
ggplot(iris, aes(x = Sepal.Length, y = Petal.Length)) +
geom_image(data = dta_img, aes(x, y, image = image), size = 0.1) +
geom_point()
库(ggimage)
dta\u img试试geom\u定制
library(ggplot2)
library(png)
library(grid)
library(egg)
i <- readPNG(system.file("img", "Rlogo.png", package="png"))
img <- data.frame(x = 6, y = 3)
img$g <- list(rasterGrob(i, width=unit(24,"pt")))
ggplot(iris, aes(x = Sepal.Length, y = Petal.Length)) +
geom_point() +
geom_custom(data=img, aes(x,y,data=g), grob_fun=identity) +
coord_fixed()
库(ggplot2)
图书馆(png)
图书馆(网格)
图书馆(蛋)
我想试试geom_的风俗
library(ggplot2)
library(png)
library(grid)
library(egg)
i <- readPNG(system.file("img", "Rlogo.png", package="png"))
img <- data.frame(x = 6, y = 3)
img$g <- list(rasterGrob(i, width=unit(24,"pt")))
ggplot(iris, aes(x = Sepal.Length, y = Petal.Length)) +
geom_point() +
geom_custom(data=img, aes(x,y,data=g), grob_fun=identity) +
coord_fixed()
库(ggplot2)
图书馆(png)
图书馆(网格)
图书馆(蛋)
我知道这只能用于单个图像。在我的示例中,我只错误地使用了一个图像。我想创建一个类似这样的情节:所以我必须在循环中添加所有图像作为注释,对吗?@JanKislinger;您可以显式地使用x
和y
美学,只需编辑我的答案。尝试将coord_fixed()
层添加到上一个示例中。它也会使徽标变形(我原来的问题)。谢谢你指出传单。我一定会检查,我明白这只能用于单个图像。在我的示例中,我只错误地使用了一个图像。我想创建一个类似这样的情节:所以我必须在循环中添加所有图像作为注释,对吗?@JanKislinger;您可以显式地使用x
和y
美学,只需编辑我的答案。尝试将coord_fixed()
层添加到上一个示例中。它也会使徽标变形(我原来的问题)。谢谢你指出传单。我一定会检查的