将html输出转换为图像
问题描述:
我正在使用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))))
答
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)
宽度/高度并不一定走出来精确地指定的内容,你需要做一些手动猜测(或加载magick
,看看你是否可以使用它自动剪辑)。
这依赖于phantomjs
,您可能无法让您的IT和/或安全组来启用它。
+0
我没有管理员权限,所以我不认为我能够做到,但感谢您的答案。我会看看我可以用IT团队做些什么。 – Joe
所以你想提取你的表格作为一个图像,而不是一个HTML文件吧? –
是的,这就是我想要的 – Joe
为什么不给数据提供功能,然后在里面操作? –