我为一个项目构建了一个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个声誉。提前谢谢!