首页 > 解决方案 > Formattable - 导出为 PDF

问题描述

我想为我的 ggplot2-visualisations 加上漂亮的表格。或者在某些情况下只显示表格。我的目标受众不喜欢仅仅被呈现在一张桌子上。可以这么说,它需要一些明确的“在哪里看”的指标。为此,我一直在使用 formattable(请参阅 pct_change... 列)。

我可以以图像格式导出下表,但我无法将其完全复制为 pdf。当我将其导出为 html,然后从浏览器打印时,我会丢失颜色格式(请参阅底部的 pct_formatter-code)。我试过 Edge、Firefox 和 Chrome。用颜色打开打印没有帮助。因此,除了通过浏览器打印很麻烦(下表是一组 150 个中的一个)之外,它也没有给我想要的结果。

我还在 Stackoverflow 上找到了一种解决方法,其中有人编写了一个“export_formattable”函数。这确实直接从 R 导出为 pdf。但是我再次失去了颜色,当我在 Adob​​e 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"
))

标签: rformattable

解决方案


您是否尝试在 Inkscape 中打开导出的 PDF?我已经在 Inkscape 中编辑了几个 PDF 文件,并且没有丢失原始 PDF 中的任何内容。


推荐阅读