如何将质量好的wordcloud放入pdf

How to put a wordcloud in a pdf with a good quality

我正在使用 R 包 wordcloud2。它工作正常,但我需要生成一个带有结果的 pdf,我发现的唯一方法如下。 我已经获得了一个包含单词和相应频率的数据框:

> ds
          word freq
1         data   33
2        cloud   32
3  complessità   29
4       system   29
5      cliente   24
6       soglia   24
7      servizi   19
8      network   18
9     digitale   17
10       radio   17
11    progetto   15
12       scada   15
13   ticketing   15
14   telephone   14
15         web   14
16         app   13
17    business   13
18 engineering   13
19   requisiti   13
20     sistema   13

现在

library(wordcloud2)
library(webshot)
library("htmlwidgets")
webshot::install_phantomjs()
set.seed(142)
my_graph  = wordcloud2(ds, size = 1.5, #widgetsize = 10,
                       minRotation = -pi/4, maxRotation = -pi/4)

一旦我创建了 wordcloud2 对象(注意:我找不到 widgetsize 的好的值。每次我使用它时,我都会得到一个空图像。也许我可以用它来创建一个更高定义的对象), 我把它放在 html 中,然后我将 html 转换成 pdf:

# sizingPolicy(defaultWidth = 100, ....) <- possible solution?
saveWidget(my_graph, "myDocument.html"  , selfcontained = F)
webshot("myDocument.html","myFigure.pdf", delay =6, vwidth = 1500, vheight=1500)

我得到一张低清晰度的图片:

我可以在程序的哪一部分为最终图像设置更高的维度?我想使用我的 wordcloud2 图 (my_graph) 并直接创建一个具有我需要的尺寸的 pdf(或 png 等)。有办法吗?

1) 你 运行 你的代码

#Data
word<-c("data","cloud","complessità","system",
"cliente","soglia","servizi","network","digitale",
"radio","progetto","scada","ticketing","telephone",
"web","app","business","engineering","requisiti",
"sistema")
freq<-c(33,32,29,29,24,24,19,18,17,17,15,15,15,14,14,13,13,13,13,13)
ds<-as.data.frame(cbind(word, freq))
ds$freq<-as.numeric(ds$freq)

library(wordcloud2)
set.seed(142)
wordcloud2(ds, size = 1.5, #widgetsize = 10,
                       minRotation = -pi/4, maxRotation = -pi/4)

2) 在 RStudio 中您可以在 google chrome

中打开您的 worldcloud

3) 您将 google chrome 的输出保存为 PDF (CTRL+P ->Save -> PDF)

4) 在此处下载高质量的 pdf 输出: https://www.docdroid.net/3tZaVGm/capturar-pdf.pdf

我将 webshot 函数的 selector 参数设置为 '#canvas'

得到了更好的结果

因此,在您的情况下,它将是:

webshot(
    url = "myDocument.html",
    file = "myFigure.pdf", 
    delay = 6, 
    vwidth = 1500, 
    vheight = 1500,
    selector = '#canvas'
)