gpt4 book ai didi

r - 在 ggplot2 中使用 SVG 图像作为符号

转载 作者:行者123 更新时间:2023-12-05 03:53:58 27 4
gpt4 key购买 nike

我想使用存储在外部文件(例如 SVG)中的矢量图形作为我在 ggplot2 图中的绘图符号。例如遵循 grImport 小插图(图 8)中的这个示例 https://cran.r-project.org/web/packages/grImport/vignettes/import.pdf

enter image description here

此示例导入​​自定义 shapefile,然后使用 lattice 绘制它,例如

xyplot(V8 ~ V7, data = flower, xlab = "Height",
ylab = "Distance Apart",
panel = function(x, y, ...) {
grid.symbols(PSflower, x, y, units = "native",
size = unit(5, "mm"))})

grid.symbols() 来自 grImport 包,PSflowergrImport

ggimage 包接近执行此操作,但它将图像转换为低于绘图的光栅,这是我试图避免的。

有什么方法可以在 ggplot2 中实现类似的东西吗?

标记

最佳答案

这是我想出的解决方案 - 似乎效果很好。您还可以使用 grImport 执行类似的操作。关键是确保 grob 的规范化绘图坐标与 ggplot 的原生坐标相匹配。

#Setup
library(grImport2)
library(ggplot2)
library(scales)
src.file <- system.file("SVG", "lwd-rsvg.svg", package="grImport2")
img <- readPicture(src.file)

#Now createa some data
d <- data.frame(x=1:5,y=1:5)

#Need to specify xlims and ylims of plot - this lets us calculate the
#normalised plot coordinates
xlims <- c(0,6)
ylims <- c(0,6)

#Create the plot points using symbolsGrob
sym.grob <- symbolsGrob(img,
x=rescale(d$x,from=xlims),
y=rescale(d$y,from=ylims),
default.units="npc",
size=0.3)

#Plot
ggplot(d,aes(x,y))+
geom_point()+
annotation_custom(sym.grob)+
coord_cartesian(xlim=xlims,ylim=ylims,expand=FALSE) #Don't forget this!

enter image description here

关于r - 在 ggplot2 中使用 SVG 图像作为符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61387217/

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