如何在Quarto文档中创建不受主题影响且含ggplot的表格?
在Quarto中创建不受主题影响的带图GT表格
方法一:用gt的opt_css()覆盖Quarto样式
Quarto的主题样式会通过全局CSS作用于所有表格,我们可以用gt的opt_css()方法注入自定义CSS,重置表格样式以还原gt默认外观,同时保留表格内的ggplot图片。
修改你的代码,在gt管道最后添加opt_css()并传入重置样式的CSS:
penguin_weights |> gt() |> tab_spanner( label = 'Penguin\'s Weight', columns = -Species ) |> text_transform( locations = cells_body(columns = 'Distribution'), fn = function(column) { map(column, ~plot_density_species(., body_mass_g)) |> ggplot_image(height = px(50), aspect_ratio = 3) } ) |> # 注入自定义CSS,覆盖Quarto的表格主题样式 opt_css( css = " .gt_table { border-collapse: separate !important; border-spacing: 0 !important; border: none !important; background-color: transparent !important; } .gt_table th, .gt_table td { border-color: #dee2e6 !important; padding: 0.5rem !important; } .gt_table th { background-color: #f8f9fa !important; font-weight: bold !important; } .gt_table .gt_row { background-color: transparent !important; } " )
这段CSS会强制覆盖Quarto主题对表格的默认样式,还原gt的基础视觉效果,且不会影响表格内图片的正常渲染。
方法二:导出GT表格为独立HTML再引入
如果不想编写CSS,可以先将gt表格导出为单独的HTML文件,再通过Quarto的include_html()函数引入,这样Quarto不会给外部HTML片段应用主题样式,图片也能完整保留。
步骤1:导出GT表格到HTML文件
在R环境中运行以下代码生成独立表格HTML:
gt_table <- penguin_weights |> gt() |> tab_spanner( label = 'Penguin\'s Weight', columns = -Species ) |> text_transform( locations = cells_body(columns = 'Distribution'), fn = function(column) { map(column, ~plot_density_species(., body_mass_g)) |> ggplot_image(height = px(50), aspect_ratio = 3) } ) # 导出到本地HTML文件 gtsave(gt_table, "penguin_table.html")
步骤2:在Quarto文档中引入
在Quarto的代码块中使用include_html()加载生成的HTML:
knitr::include_html("penguin_table.html")
引入后的表格会保持gt原本的样式,不会被Quarto主题修改,同时图片可正常显示。
内容的提问来源于stack exchange,提问作者AlbertRapp
相关产品推荐
相关产品推荐

