在ggplot中将像素图像转换为可缩放矢量图形

Turn pixel image into scalable vector graphic in ggplot

请注意,我对扩展像素数量并插入新值的任何类型的插值算法都不感兴趣。

我想离开基于像素的图像世界,正在寻找一些可扩展的矢量图像解决方案。

有没有办法将 ggplot 中的像素图像转换为彩色网格平滑矢量图形?

以下图片展示了我的目标。

然后抹平。

图片取自以下维基百科文章HERE

请注意,文章中的原始图像是 SVG 文件。您可以任意放大,并且始终拥有平滑的颜色过渡且没有边缘。

一些额外的图片和信息:HERE2

这是满足第一张图片的一些示例数据"nearest"

library(ggplot2)
n = 5
pixelImg <- expand.grid(x=1:n,y=1:n)
pixelImg$value <- sample(1:n^2,n^2,replace = T)

ggplot(pixelImg, aes(x, y)) +
  geom_raster(aes(fill = value)) +
  scale_fill_gradientn(colours=c("#FFCd94", "#FF69B4", "#FF0000","#4C0000","#000000"))

如果不在 ggplot 中,是否有办法在 ggplot 之外进行?

查看 ggsave() 函数。它支持 .svg 个矢量图形文件。