在R中,假设我有一个ggplot个对象,如下面教程中的p个:

library(ggplot2)
data <- data.frame(
        day = as.Date("2017-06-14") - 0:364,
        value = runif(365) + seq(-140, 224)^2 / 10000
)
p <- ggplot(data, aes(x=day, y=value)) +
        geom_line() +
        xlab("")

我不想看到图像,也不想将其保存到文件中.我想要的是获得一个字符串,它是这个图像的SVG,而不做这两件事中的任何一个.这有可能吗?

推荐答案

您可以使用svglite::svgstring():

library(ggplot2)
library(svglite)

data <- data.frame(
  day = as.Date("2017-06-14") - 0:364,
  value = runif(365) + seq(-140, 224)^2 / 10000
)

s <- svgstring()

ggplot(data, aes(x=day, y=value)) +
  geom_line() +
  xlab("")

my_svg <- s()
dev.off()

其中my_svg是包含以下内容的字符串:

<?xml version='1.0' encoding='UTF-8' ?>
<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='720.00pt' height='576.00pt' viewBox='0 0 720.00 576.00'>
<defs>
  <style type='text/css'><![CDATA[
    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
      fill: none;
      stroke: #000000;
      stroke-linecap: round;
      stroke-linejoin: round;
      stroke-miterlimit: 10.00;
    }
    .svglite text {
      white-space: pre;
    }
  ]]></style>
...

R相关问答推荐

根据固定值范围在tible中添加新行

如何替换R中数据集列中的各种字符串

无法在我的情节中表现出显着的差异

如果行和大于值,则过滤

如何编辑ggplot的图例字使用自定义对象(gtable)?'

基于多列将值链接到NA

lightgbm发动机在tidymmodels中的L1正则化""

如何改变时间图R中的悬停信息?

在连续尺度上转置标签[瀑布图,R]

在R中无法读入具有Readxl和lApply的数据集

如何同时从多个列表中获取名字?

仅 Select 超过9行的CSV文件

如何将网站图像添加到带有极坐标的面包裹条形图?

R-按最接近午夜的时间进行筛选

基于Key->Value数据帧的基因子集相关性提取

R代码,用于在线条图下显示观测表

在ggplot2上从多个数据框创建复杂的自定义图形

在GT()中的列之间添加空格

使用&Fill&Quot;在gglot中创建 colored颜色 渐变

从不同长度的列中随机排序特定数量的元素