gpt4 book ai didi

r - 如何将R ggplot图形存储为html代码段

转载 作者:行者123 更新时间:2023-12-04 10:36:53 28 4
gpt4 key购买 nike

我通过使用ggplotly()和htmltools函数(例如h3()html())创建各种对象来创建html文档。然后,我将它们作为列表提交给htmltools::save_html(),以创建一个html文件。

我想直接将ggplot图表添加为图像,而不是附加所有杂乱无章的钟声。最后,我将创建一个自包含的html文件(无依赖项),而内容丰富的工作会使该文件过大。

是否有一些将ggplot对象转换为html类型对象的函数?还是我必须将ggplot保存为.png文件,然后将.png文件读入我添加到save_html()函数列表中的某个对象中?

我的R代码如下所示:

library("tidyverse")
library("plotly")
library("htmltools")

HTMLOut <- "c:/Users/MrMagoo/My.html")
df <- data.frame(x=1:25, y=c(1:25*1:25))

g7 <- ggplot(df,aes(x=x, y=y)) + geom_point()
p7 <- ggplotly(g7) # I would like to use something other than ggplotly here. Just capturing the ggplot as an image would be fine.

# create other objects to add to the html file
t7 <- h2(id="graph7", "Title for graph #7")
d7 <- p("description of graph 7")

save_html(list(t7, p7, d7), HTMLOut)
# of course, the real code has many more objects in that list – more graphs, text, tables, etc.

我想用仅显示g7的方式替换plotly对象(p7),其方式不会在save_html函数中引起错误。

我曾希望找到一个可以直接对ggplot对象进行 Base64编码的函数,但是似乎我首先需要将“ggplot”对象输出为.png文件(或SVG,如下图Teng L所述),然后输出base64 -对其进行编码。我希望有一种更直接的方法,但是我可能最终会这样做,如 https://stackoverflow.com/a/33410766/3799203那样,以结尾
g7img <- "<img src=\"data:image/png;base64,(base64encode string)\""
g7img <- htmltools::html(g7img)

最佳答案

如果要将图另存为动态plotly图,则可以使用htmlwidgets::saveWidget。这将产生一个独立的html文件。

这是一个最小的示例:

library(tidyverse);
library(plotly);
library(htmlwidgets);

df <- data.frame(x = 1:25, y = c(1:25 * 1:25))
gg <- ggplot(df,aes(x = x, y = y)) + geom_point()

# Save ggplotly as widget in file test.html
saveWidget(ggplotly(gg), file = "test.html");

关于r - 如何将R ggplot图形存储为html代码段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50244709/

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