R中生成的图形的HTML代码生成

如何在不将HTML代码保存到HTML文件的情况下生成HTML代码并将其分配给R中的变量? (即)

功能必须像

p <- pairs(data)

res <- htmlcodefunction(p)

res

输出必须是 HTML代码,而不是文件

liuyan515 回答:R中生成的图形的HTML代码生成

您不能直接将图像编码为HTML。当您看到HTML中的图像时,通常是通过链接到服务器上的图像文件来完成的。但是,有很多方法可以解决这个问题。

如果要将图像数据存储为HTML文件中的字符,则可以使用base64对光栅图像进行编码,或者对于矢量图形(例如R图),可以将其编码为SVG,这很可能是通过将图像存储为HTML意味着什么。

请注意,在示例代码中,实际上并没有存储任何内容到p,因为尽管pairs会绘制图形,但不会返回对象,因此没有任何对象可用于一个可以做任何事情的功能。

无论如何,这是一个小函数,它将绘图函数作为参数并返回一个svg字符串,该字符串可在HTML中使用:

as_svg <- function(my_plot,...)
{
  my_plot <- as.call(substitute(my_plot))
  loc <- tempfile()
  svg(loc,...)
  eval(my_plot)
  dev.off()
  readChar(loc,1e6L)
}

您可以像这样使用它:

as_svg(plot(rnorm(10),rnorm(10)))
#> [1] "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg xmlns=\"http://www.w3.org/2000/svg\" 
#> xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"504pt\" height=\"504pt\" viewBox=\"0 
#> 0 504 504\" version=\"1.1\">\n<defs>\n<g>\n<symbol overflow=\"visible\" id=\"glyph0-0\">
#> \n<path style=\"stroke:none;\" d=\"M 1.5 0 L 1.5 -7.5 L 7.5 -7.5 L 7.5 0 Z M 1.6875 -0.1875 L 
#> 7.3125 -0.1875 L 7.3125 -7.3125 L 1.6875 -7.3125 Z M 1.6875 -0.1875 \"/>\n</symbol>\n<symbol 
#> overflow=\"visible\" id=\"glyph0-1\">\n<path style=\"stroke:none;\" d=\"M 0.382813 -2.578125 L 
#> 0.382813 -3.640625 L 3.621094 -3.640625 L 3.621094 -2.578125 Z M 0.382813 -2.578125 \"/>\n
#> </symbol>\n<symbol overflow=\"visible\" id=\"glyph0-2\">\n<path style=\"stroke:none;\" 
#> d=\"M 6.039063 -1.015625 L 6.039063 0 L 0.363281 0 C 0.355469 -0.253906 0.394531 -0.496094
#> 0.484375 -0.734375 C 0.628906 -1.117188 0.859375 -1.5 1.179688 -1.875 C 1.492188 -2.25 
#> 1.953125 -2.683594 2.5625 -3.175781 C 3.492188 -3.941406 4.125 -4.546875 4.453125 -4.992188 C
#>  ... <truncated>

本文链接:https://www.f2er.com/2385461.html

大家都在问