在Shiny应用程序的ggplot2图表中左对齐标题和带有y轴标签的字幕

时间:2017-01-29 18:44:50

标签: r plot ggplot2 shiny

我为一个项目构建了一个Shiny应用程序,其中包含多个社会保障信托基金评估指标的ggplot2图表。图标题目前与笛卡尔坐标平面的左边缘左对齐。这不符合我们的风格指南。

在静态(非闪亮)ggplot2图表中,我可以使用theme(plot.title = element_text(hjust = -0.24)将标题与y轴标签的左边缘对齐。在Shiny应用程序中,y轴标签会发生变化,长度可以是100美元,1,000美元,10,000美元等,具体取决于应用程序中的选择。除了使用hjust = -x.x进行猜测和检查之外,还有一种方法可以将标题和副标题左对齐到最长y轴标签的左边缘吗?

示例:

library(tidyverse)

ggplot(diamonds, aes(carat, price)) +
  geom_point() +
  labs(title = "Diamonds",
       subtitle = "Bigger Dimaonds Cost More Money") +
  theme(plot.title = element_text(hjust = 0)) +
  ylab(NULL) +
  scale_y_continuous(expand = c(0,0), labels = dollar) + 
  theme(plot.title = element_text(hjust = -0.24),
        plot.subtitle = element_text(hjust = -0.57))

上面的标题正确对齐。下面,y轴标签的长度发生变化,现在标题未对齐。

library(tidyverse)

diamonds %>%
  filter(price < 10000) %>%
  ggplot(aes(carat, price)) +
  geom_point() +
  labs(title = "Diamonds",
       subtitle = "Bigger Dimaonds Cost More Money") +
  theme(plot.title = element_text(hjust = 0)) +
  ylab(NULL) +
  scale_y_continuous(expand = c(0,0), labels = dollar) + 
  theme(plot.title = element_text(hjust = -0.24),
        plot.subtitle = element_text(hjust = -0.58))

我发现很多Stack overflow帖子来自ggplot2 2.2.0,当用户想要左对齐标题而不是使用默认的居中标题时。使用来自网格的textGrob()和来自gridExtra的arrangeGrob()的标题也有solution,但我无法将此解决方案扩展到字幕。

我还没有找到解决这个问题的方法。此外,我会包括信息图像,但我没有10个声誉。提前谢谢!

0 个答案:

没有答案