通过使用ggplot和faced_grid
函数,我试图制作一个热图。我有一个分类的y轴,我希望y轴标签左对齐。当我使用theme(axis.text.y.left = element_text(hjust = 0))
时,每个面板的标签都是独立对齐的。下面是代码:
#data
set.seed(1)
gruplar <- NA
for(i in 1:20) gruplar[i] <- paste(LETTERS[sample(c(1:20),sample(c(1:20),1),replace = T) ],
sep="",collapse = "")
gruplar <- cbind(gruplar,anagruplar=rep(1:4,each=5))
tarih <- data.frame(yil= rep(2014:2019,each=12) ,ay =rep_len(1:12, length.out = 72))
gruplar <- gruplar[rep(1:nrow(gruplar),each=nrow(tarih)),]
tarih <- tarih[rep_len(1:nrow(tarih),length.out = nrow(gruplar)),]
grouped <- cbind(tarih,gruplar)
grouped$value <- rnorm(nrow(grouped))
#plot
p <- ggplot(grouped,aes(ay,gruplar,fill=value))
p <- p + facet_grid(anagruplar~yil,scales = "free",
space = "free",switch = "y")
p <- p + theme_minimal(base_size = 14) +labs(x="",y="") +
theme(strip.placement = "outside",
strip.text.y = element_text(angle = 90))
p <- p + geom_raster(aes(fill = value), na.rm = T)
p + theme(axis.text.y.left = element_text(hjust = 0, size=14))
我知道,通过把空格和使用一个单一的空间字体,我可以解决这个问题,但我必须使用字体'校准轻'。
3条答案
按热度按时间c0vxltue1#
挖掘grobs不是我最喜欢的黑客,但它可以在这里发挥作用:
deikduxw2#
我想一个选择是在右边画标签,并在gtable中移动该列
fnvucqvd3#
这看起来像是ggplot 2中的一个bug,或者至少是我认为不受欢迎/意外的行为。你可能已经看到了approach suggested here,它在单空格字体上使用字符串填充来实现对齐。
这是相当hacky,但如果你需要实现对齐使用一个特定的字体,你可能会取代轴标签完全与
geom_text
.我有一个大部分工作的解决方案,但它是丑陋的,因为每一步似乎打破别的东西!(The最后一个问题,我可以看到这个图是,它显示了一个孤立的“0”的x轴上的虚拟方面。需要另一个黑客来摆脱这一点!)