2017-07-25 185 views
1

我正在使用R formattable包來呈現某些數據框,但輸出爲html(它會在我運行腳本後打開瀏覽器)。將html輸出轉換爲圖像

事情是我試圖渲染PowerBI下的那些表,它接受R腳本,但需要輸出爲圖像(如ggplot)而不是html。但我不知道我該怎麼做。

我已經看過R2HTML和htmlwidgets包,但我仍然沒有找到解決方案。 (我可能犯了一些錯誤)。

這裏是僞代碼,我的工作:

library(formattable) 
DF <- data.frame(Ticker=c("", "", "", "IBM", "AAPL", "MSFT"), 
      Name=c("Dow Jones", "S&P 500", "Technology", 
        "IBM", "Apple", "Microsoft"), 
      Value=accounting(c(15988.08, 1880.33, NA, 
           130.00, 97.05, 50.99)), 
      Change=percent(c(-0.0239, -0.0216, 0.021, 
           -0.0219, -0.0248, -0.0399))) 
DF 
## Ticker  Name  Value Change 
## 1   Dow Jones 15,988.08 -2.39% 
## 2   S&P 500 1,880.33 -2.16% 
## 3  Technology  NA 2.10% 
## 4 IBM  IBM 130.00 -2.19% 
## 5 AAPL  Apple  97.05 -2.48% 
## 6 MSFT Microsoft  50.99 -3.99% 
formattable(DF, list(
    Name=formatter(
"span", 
style = x ~ ifelse(x == "Technology", 
        style(font.weight = "bold"), NA)), 
    Value = color_tile("white", "orange") 
Change = formatter(
"span", 
style = x ~ style(color = ifelse(x < 0 , "red", "green")), 
x ~ icontext(ifelse(x < 0, "arrow-down", "arrow-up"), x)))) 
+0

所以你想提取你的表格作爲一個圖像,而不是一個HTML文件吧? –

+0

是的,這就是我想要的 – Joe

+0

爲什麼不給數據提供功能,然後在裏面操作? –

回答

0
formattable(DF, list(
    Name = formatter(
    "span", style = x ~ ifelse(x == "Technology", style(font.weight = "bold"), NA) 
), 
    Value = color_tile("white", "orange"), 
    Change = formatter(
    "span", style = x ~ style(color = ifelse(x < 0 , "red", "green")), 
    x ~ icontext(ifelse(x < 0, "arrow-down", "arrow-up"), x))) 
) -> w 

htmlwidgets::saveWidget(as.htmlwidget(w), "/some/dir/table.html", selfcontained = TRUE) 

webshot::webshot(url = "/some/dir/table.html", file = "/some/dir/table.png", 
       vwidth = 1000, vheight = 275) 

enter image description here

寬度/高度並不一定走出來精確地指定的內容,你需要做一些手動猜測(或加載magick,看看你是否可以使用它自動剪輯)。

這依賴於phantomjs,您可能無法讓您的IT和/或安全組來啓用它。

+0

我沒有管理員權限,所以我不認爲我能夠做到,但感謝您的答案。我會看看我可以用IT團隊做些什麼。 – Joe