提问人:Finn Lübber 提问时间:9/21/2023 更新时间:9/21/2023 访问量:33
更改 ggplot 比例中的轴位置可以忽略 theme(axis.text) 的 hjust/vjust
Altering axes positions in ggplot scales lets hjust/vjust of theme(axis.text) to be ignored
问:
我想创建一个 x 轴位于顶部且轴标签旋转 90 度的绘图,与刻度中心对齐。这是我的代码:
library(tidyverse)
# create data
a3 <- rnorm(100, 0, 1)
aaa4 <- rnorm(100, 0, 1)
aaaa5 <- rnorm(100, 0, 1)
df_2 <- data.frame(a3, aaa4, aaaa5)
correlation_matrix_2 <- cor(df_2)
corr_long <- correlation_matrix_2 %>%
as.data.frame(.) %>%
rownames_to_column(., var = "V1") %>%
pivot_longer(., cols = -V1, names_to = "V2", values_to = "r")
# plot:
ggplot(corr_long, aes(V1, V2))+
geom_tile(mapping = aes(fill = r))+
scale_x_discrete(position = "top")+
theme(axis.text.x = element_text(size = 16, angle = 90, hjust = 0, vjust = .5))
但是,该图忽略了主题的 vjust 参数,并且总是将标签定位得有点偏离。仅当使用scale_x_discrete中的位置参数将轴设置为顶部时,才会发生这种情况,它适用于“底部”。在这两种情况下,hjust 都按预期工作。
然后我尝试了其他一些方法,发现当 y 轴设置在右侧时也会发生这种情况,但随后忽略了 hjust,vjust 起作用。它也发生在 scale_x/y_continuous。更改顺序(先更改主题,然后更改scale_x_discrete)也不会更改任何内容,并且将其拆分为两个单独的命令也不起作用:
[...]
theme(axis.text.x = element_text(hjust = 0))+
theme(axis.text.x = element_text(vjust = 1))+
[...]
这是一个错误还是我在这里遗漏了什么?
答:
0赞
nrennie
9/21/2023
#1
您可以使用函数的参数而不是 来调整轴文本在顶部的位置。同样,您可以使用右侧的 y 轴文本。例如:axis.text.x.top
theme()
axis.text.x
axis.text.y.right
ggplot(corr_long, aes(V1, V2))+
geom_tile(mapping = aes(fill = r))+
scale_x_discrete(position = "top")+
theme(axis.text.x.top = element_text(size = 16, angle = 90, hjust = 0, vjust = .5))
评论
axis.text.x.top
theme()
axis.text.x
vjust
theme
axis.text.x.top
axis.text.x
theme_grey
vjust
axis.text.x.top
axis.text.x