You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shiny Dashboard中堆叠条形图字体渲染异常问题求助

Shiny Dashboard中ggplot2堆叠条形图字体挤压变形的解决方法

本地环境下用ggplot2生成的堆叠条形图显示正常,但部署到Shiny Dashboard后出现字体挤压变形的问题,原代码如下:

EducationBarPlot <- ggplot(Education.long, aes(x = Persons, y = Total, fill=Gender)) +
  geom_col(width = 0.5) +
  scale_fill_manual(values = wes_palette("GrandBudapest1"))+
  geom_text(aes(label=Total),position = position_stack(vjust = 0.5), size = 4, color = "#ffffff") +
  labs(x="")+
  theme(axis.text.x = element_text(color = "black", face = "bold"),
        axis.text.y = element_text(color="black", face = "bold", size=9),
        legend.text = element_text(size = 9))+
  theme_hc()+
  theme(legend.title = element_blank())+
  coord_flip()
EducationBarPlot

解决方法:

  • 调整theme设置顺序:theme_hc()是完整的主题模板,会覆盖之前的自定义theme参数。把你的自定义theme配置放在theme_hc()之后,确保字体等设置能生效。

  • 明确全局与局部字体参数:添加全局文本基准尺寸,同时给文本指定通用字体(避免服务器环境缺少本地字体),保证渲染一致性。

  • 给图表足够的渲染空间:在Shiny的plotOutput和renderPlot中指定合适的尺寸,避免容器过小导致字体挤压。

修改后的完整绘图代码:

EducationBarPlot <- ggplot(Education.long, aes(x = Persons, y = Total, fill=Gender)) +
  geom_col(width = 0.5) +
  scale_fill_manual(values = wes_palette("GrandBudapest1"))+
  geom_text(aes(label=Total), position = position_stack(vjust = 0.5), size = 4, color = "#ffffff") +
  labs(x="")+
  theme_hc()+  # 先应用hc主题
  # 后添加自定义主题,覆盖默认设置
  theme(
    axis.text.x = element_text(color = "black", face = "bold", family = "sans"),
    axis.text.y = element_text(color="black", face = "bold", size=9, family = "sans"),
    legend.text = element_text(size = 9, family = "sans"),
    legend.title = element_blank(),
    text = element_text(size = 10)  # 全局文本基准大小
  )+
  coord_flip()
EducationBarPlot

Shiny端配置示例(确保图表容器尺寸足够):

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody(
    box(
      width = 12,
      plotOutput("education_plot", height = "600px")  # 显式指定高度
    )
  )
)

server <- function(input, output) {
  output$education_plot <- renderPlot({
    EducationBarPlot
  }, width = "100%")
}

shinyApp(ui, server)

内容的提问来源于stack exchange,提问作者andrew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 16:01:16