R ggplot2:yaxis标签未跨面对齐
在ggplot中,跨面对齐轴标签时遇到一些问题。我尝试将所有y轴标签左对齐,以使文本看起来更加统一,但在脚本中添加scales=free参数时,标签仅在刻面内对齐。我用一些伪代码进行了测试,出现了同样的问题:R ggplot2:yaxis标签未跨面对齐,r,ggplot2,R,Ggplot2,在ggplot中,跨面对齐轴标签时遇到一些问题。我尝试将所有y轴标签左对齐,以使文本看起来更加统一,但在脚本中添加scales=free参数时,标签仅在刻面内对齐。我用一些伪代码进行了测试,出现了同样的问题: test <- data.frame(label = c('a', 'ab', 'a', 'abc', 'abcd', 'abcde', 'abcdef', 'abcdefg', 'abcdefgh',
test <- data.frame(label = c('a', 'ab', 'a', 'abc', 'abcd', 'abcde',
'abcdef', 'abcdefg', 'abcdefgh',
'abcdefghi', 'abcdefghij',
'abcdefghijkfiutdkjgbhcvi'),
xdum = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12),
facett = rep(c("Facet 1", "Facet 2", "Facet 3"), 4),
data = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12))
ggplot(test, aes(x = xdum, y = label, label = data)) +
facet_grid(facett~., scales = "free", space = "free") +
geom_tile() +
theme(axis.ticks = element_blank(), axis.text.y = element_text(hjust = 0))
以前有没有人看到过这一点,并找到了解决方法,或者我必须处理gtable代码 您可以将标签填充到最长字符串的长度,然后以固定宽度字体显示:
max_width = max(nchar(as.character(test$label)))
test$label_padded = sprintf(paste0("%-", max_width, "s"), test$label)
# (Ignore this if not on Windows)
windowsFonts(Consolas = "Consolas")
ggplot(test, aes(x = xdum, y = label_padded, label = data)) +
facet_grid(facett~., scales = "free", space = "free") +
geom_tile() +
theme(axis.ticks = element_blank(),
axis.text.y = element_text(hjust = 0, family = "Consolas"))
您可以将标签填充到最长字符串的长度,然后以固定宽度字体显示:
max_width = max(nchar(as.character(test$label)))
test$label_padded = sprintf(paste0("%-", max_width, "s"), test$label)
# (Ignore this if not on Windows)
windowsFonts(Consolas = "Consolas")
ggplot(test, aes(x = xdum, y = label_padded, label = data)) +
facet_grid(facett~., scales = "free", space = "free") +
geom_tile() +
theme(axis.ticks = element_blank(),
axis.text.y = element_text(hjust = 0, family = "Consolas"))
您考虑过axis.text.y=element\u texthjust=1吗?这样可以保持对齐,并且右对齐的文本在使用长标签时看起来更好。这样做没有问题,看起来也更整洁,但我的客户希望它是左对齐的…您考虑过axis.text.y=element\u texthjust=1吗?这样可以保持对齐,并且右对齐的文本在使用长标签时看起来更好。这样做没有问题,看起来更整洁,但我的客户希望它是左对齐的…谢谢Marius!我试过用空格填充标签,但不知道固定宽度的字体。谢谢马吕斯!我曾测试过用空格填充标签,但不知道固定宽度的字体。