r - Formattable - 导出为 PDF
问题描述
我想为我的 ggplot2-visualisations 加上漂亮的表格。或者在某些情况下只显示表格。我的目标受众不喜欢仅仅被呈现在一张桌子上。可以这么说,它需要一些明确的“在哪里看”的指标。为此,我一直在使用 formattable(请参阅 pct_change... 列)。
我可以以图像格式导出下表,但我无法将其完全复制为 pdf。当我将其导出为 html,然后从浏览器打印时,我会丢失颜色格式(请参阅底部的 pct_formatter-code)。我试过 Edge、Firefox 和 Chrome。用颜色打开打印没有帮助。因此,除了通过浏览器打印很麻烦(下表是一组 150 个中的一个)之外,它也没有给我想要的结果。
我还在 Stackoverflow 上找到了一种解决方法,其中有人编写了一个“export_formattable”函数。这确实直接从 R 导出为 pdf。但是我再次失去了颜色,当我在 Adobe Illustrator 中打开它时,我也失去了箭头图标,它们变得像 [X] 框。所以这也行不通。
老实说,我还没有真正尝试过 Rmarkdown,只是因为我不熟练使用它。从我的尝试来看,似乎不是简单地以我想要的方式、形状或大小输出表格。我不想创建(可重现的)融洽关系。我只需要一个“精美”格式的 pdf 表格(或 .svg !!),然后我将手动将其与 InDesign 中的可视化相结合以制作所需的文档。
感谢阅读,希望对大家有帮助!
pct_formatter <- formatter("span",
style = x ~ style(
color =
ifelse(
x > 0, "#39870c",
ifelse(
x < 0, "#d52b1e",
"black")
)
), x ~ icontext(ifelse(x>0, "arrow-up", "arrow-down"), x)
)
数据:
structure(list(Year = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("2019", "2020",
"2021"), class = "factor"), Month = c(1, 2, 3, 4, 5, 6, 7, 8,
9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3,
4, 5, 6, 7, 8, 9), Totaal_permaand = c(2243L, 2007L, 2884L, 2206L,
2701L, 2325L, 1452L, 1721L, 3152L, 3067L, 3097L, 2554L, 3303L,
2948L, 3325L, 3173L, 3504L, 3209L, 5924L, 4637L, 5735L, 6206L,
4252L, 3479L, 4312L, 3128L, 4529L, 4170L, 3814L, 5587L, 9281L,
4615L, 4426L), abs_change.M = c(NA, -236L, 877L, -678L, 495L,
-376L, -873L, 269L, 1431L, -85L, 30L, -543L, 749L, -355L, 377L,
-152L, 331L, -295L, 2715L, -1287L, 1098L, 471L, -1954L, -773L,
833L, -1184L, 1401L, -359L, -356L, 1773L, 3694L, -4666L, -189L
), pct_change.M = c(NA, -10.5, 43.7, -23.5, 22.4, -13.9, -37.5,
18.5, 83.1, -2.7, 1, -17.5, 29.3, -10.7, 12.8, -4.6, 10.4, -8.4,
84.6, -21.7, 23.7, 8.2, -31.5, -18.2, 23.9, -27.5, 44.8, -7.9,
-8.5, 46.5, 66.1, -50.3, -4.1), abs_change.Y = c(NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, 1060L, 941L, 441L, 967L,
803L, 884L, 4472L, 2916L, 2583L, 3139L, 1155L, 925L, 1009L, 180L,
1204L, 997L, 310L, 2378L, 3357L, -22L, -1309L), pct_change.Y = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 47.3, 46.9, 15.3,
43.8, 29.7, 38, 308, 169.4, 81.9, 102.3, 37.3, 36.2, 30.5, 6.1,
36.2, 31.4, 8.8, 74.1, 56.7, -0.5, -22.8), abs_change.Y2 = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, 2069L, 1121L, 1645L, 1964L, 1113L,
3262L, 7829L, 2894L, 1274L), pct_change.Y2 = c(NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, 92.2, 55.9, 57, 89, 41.2, 140.3, 539.2, 168.2,
40.4), CS = c(2243L, 4250L, 7134L, 9340L, 12041L, 14366L, 15818L,
17539L, 20691L, 23758L, 26855L, 29409L, 3303L, 6251L, 9576L,
12749L, 16253L, 19462L, 25386L, 30023L, 35758L, 41964L, 46216L,
49695L, 4312L, 7440L, 11969L, 16139L, 19953L, 25540L, 34821L,
39436L, 43862L), abs_change.SY = c(NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, 1060L, 2001L, 2442L, 3409L, 4212L, 5096L,
9568L, 12484L, 15067L, 18206L, 19361L, 20286L, 1009L, 1189L,
2393L, 3390L, 3700L, 6078L, 9435L, 9413L, 8104L), pct_change.SY = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 47.3, 47.1, 34.2,
36.5, 35, 35.5, 60.5, 71.2, 72.8, 76.6, 72.1, 69, 30.5, 19, 25,
26.6, 22.8, 31.2, 37.2, 31.4, 22.7), abs_change.SY2 = c(NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, 2069L, 3190L, 4835L, 6799L, 7912L, 11174L,
19003L, 21897L, 23171L), pct_change.SY2 = c(NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, 92.2, 75.1, 67.8, 72.8, 65.7, 77.8, 120.1, 124.8,
112)), row.names = c(NA, -33L), class = c("tbl_df", "tbl", "data.frame"
))
解决方案
您是否尝试在 Inkscape 中打开导出的 PDF?我已经在 Inkscape 中编辑了几个 PDF 文件,并且没有丢失原始 PDF 中的任何内容。
推荐阅读
- node.js - Nodejs Request Cheerio - 使用 for 循环抓取网站
- grails - grails gorm critieria builder count返回不正确的值?
- javascript - 如何使 process.argv 仅打印参数(而不是路径或节点命令)
- python - 尝试在 Python 中使用随机整数函数时出现错误消息?
- python - 无法将 .mat 文件读入 python
- amazon-web-services - 具有相同名称的多个托管区域这是如何工作的?
- extjs - ExtJS 3 锁定:真的不工作
- javascript - Firebase 可调用函数不起作用
- kubernetes - 在 kubernetes 上公开我的传出 IP 地址可以访问的特定端口
- ruby - Ruby:处理布尔值