繁体   English   中英

ggplot2:yaxis标签没有在整个面上对齐

[英]ggplot2: yaxis labels not aligning across facets

我在ggplot中对齐刻面上的轴标签时遇到了一些麻烦。 我试图左对齐所有的y轴标签,使文本看起来更加统一,但是当“scale = free”参数添加到脚本时,标签只会构面对齐。 我已经测试了一些虚拟代码,并出现同样的问题:

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"))

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM