r – 将gvisGeoMap对象保存到png

如何将gogle对象从googleVis保存到png?

ggvis有export_png,但这对googleVis不起作用.

我看到几个问这个但是真的没办法吗?

test_data <- data.frame(count=c(1,2,5),group=c("Australia","Austria","China"))

p <- gvisGeoMap(test_data,locationvar='group',numvar='count',options=list(dataMode='regions',colors="['0x0000ff', '0xff0000']"))

plot(p)

最佳答案 有许多方法可以通过不可预测的结果来处理这个问题.

一些技巧:

> Xvfb,imagemagick和浏览器.

您需要安装所有这三个.这不适用于Windows.我假设你已经安装了xvfb和imagemagick.
你在shell中启动xvfb服务器: –

Xvfb :3 -screen 0 1024x768x24 &

现在在R,
你可以打印文件为html:

print(p, file="p.html")

现在系统调用:

system("DISPLAY=:3      firefox     g1.html  &")

现在打印文件使用:

system("DISPLAY=:3 import -window root p.png")

您将获得p.png文件.您可以使用其他一些浏览器,如chrome.
>使用wkhtmltopdf包.

安装wkhtmltopdf并将其放入PATH后,使用系统调用:

print(p, file="p.html")
system("wkhtmltoimage --enable-plugins --javascript-delay 10000   p.html p.png")

结果是不可预测的.有时闪存不起作用.有时它适用于某些平台.我不能像我的第一个解决方案一样重现. (对于OP,这个解决方案很有效.这是一个跨平台的解决方案.)
>作为闪亮的应用程序,phantomjs和webshot:

假设您已经打印了我提供的文件,请使用以下方法创建一个闪亮的应用程序:

mkdir app # Create App Directory
# Create UI
cat <<- EOF > app/ui.R
library(shiny)

shinyUI(fluidPage(
  titlePanel("Google Chart"),
  mainPanel(
    includeHTML("../g1.html")
  )
))    
EOF
# Create server
cat <<- EOF > app/server.R
library(shiny)
shinyServer(function(input, output) {
})
EOF

现在安装phantomjs:

npm install -g phantomjs

在r: –

install.packages("webshot")
appshot("app", "p.png")

你会看到你不会得到闪存图表,因为phantomjs现在不支持闪存.所以这种方法也是有限的.只有第一种方法可行,但它不是跨平台的.但是你可以通过使用相同的东西在Windows中继续这种方法.

点赞