首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将简单的R图图像转换为base64编码,而不先将图像文件读写到磁盘上?

如何将简单的R图图像转换为base64编码,而不先将图像文件读写到磁盘上?
EN

Stack Overflow用户
提问于 2019-02-13 14:33:28
回答 2查看 974关注 0票数 2

如何在不首先将绘图映像写入磁盘(即直接从R环境)的情况下将其转换为base64编码?

this演示了如何从图像文件中执行此操作。我无法使用文件,因为我只在一个只有R解释器的环境中运行这个文件(即只使用临时存储)。

我尝试过像这样使用base64Encode()

代码语言:javascript
运行
复制
library(ggplot2)
library(dplyr)
df <- data.frame(
  gp = factor(rep(letters[1:3], each = 10)),
  y = rnorm(30)
)
ds <- plyr::ddply(df, "gp", plyr::summarise, mean = mean(y), sd = sd(y))

a <- ggplot(df, aes(gp, y)) +
  geom_point() +
  geom_point(data = ds, aes(y = mean), colour = 'red', size = 3) 

library(RCurl)
a %>% base64Encode(.)

但这只是将底层的绘图数据(而不是图像本身)转换为base64。

如何将图像从R环境转换为base64?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-23 08:01:40

您的a对象,如您所识别的,不是一个实际的绘图,而是“来自绘图的原始数据”。严格地说,它代表了你想要描绘的东西,变量和元素之间的映射,以及所有的美学(主题、颜色等等)。尝试以下几点:

代码语言:javascript
运行
复制
str(a, max.level=1)

(并一点一点地递增max.level )。

当您在控制台中查看a时,R实际上是在调用print(a) --这就是如果您只是从命令行运行脚本,尝试通过调用a本身来输出绘图的原因,这就是为什么您不会得到输出的原因。

当调用print(a) (或从交互会话间接调用)时,ggplot2通过将变量映射到x-轴和y轴、颜色、映射出小面等来构建绘图。然后将结果绘制在图形设备上,无论是绘图窗口还是文件。实际上,您可以使用ggplotGrob捕获此绘图的图形表示,然后在将其发送到屏幕或文件之前进一步操作实际绘图。

这有什么用?

您需要使用print(a)而不是直接编码a (正如您已经注意到的)。

例如,要生成一个base64 64编码的地块,您可以:

代码语言:javascript
运行
复制
library(base64enc)
## convert image to base64 encoded string

fn <- tempfile(fileext='.png')
png(fn)
print(a)
dev.off()

base64enc::base64encode(fn)

但是:这确实要求您可以写入临时文件。老实说,我很难相信你被阻止了。

不幸的是,我不知道任何图形设备(png,bmp等)。是否可以直接写入内存流或变量,而不是物理文件。

票数 1
EN

Stack Overflow用户

发布于 2019-02-13 14:42:58

它似乎适用于来自某种类型的对象。当您使用ggplot()时,对象的类与使用plot()时不同。

代码语言:javascript
运行
复制
class(a)
# [1] "gg"     "ggplot"
class(my_plot)
# [1] "NULL"

为什么不一直使用ggplot()呢?

代码语言:javascript
运行
复制
my_ggplot <- ggplot(mapping = aes(x = 1:6, y = c(1,3,6,2,7,5))) + geom_point()

my_ggplot %>% base64Encode(.)
# [1] "bGlzdCgp"
# attr(,"class")
# [1] "base64"
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54672663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档