【问题标题】:ggplot x axis labels wont go verticalggplot x轴标签不会垂直
【发布时间】:2021-06-06 19:07:26
【问题描述】:

应该没有 xaxis 标签,我设置为 element_blank() 并且标签应该以一定角度出来,垂直于绘图而不是像这样聚集和不可读。我已经在下面发布了我的代码我不确定是什么导致了这个问题。每组 162 个点与一个变量相关,因此每个标签已设置为出现在中间,即所有 45 个自变量的每个 81 倍数。这就是 scale_x_continuous 的用途。我不知道为什么情节显示 1:n(pvall) 我以为我已经用 theme(legend.title=element_blank()) 关闭了它。

这是制作它的代码。

pvalplot<-function(var, maintitle) {
  
  pvalall<-as.data.frame(c(t(var)))
  pvalall$Sample_Size<-c((1:(5*162)),(1:(11*162)),(1:(3*162)),(1:(5*162)),(1:(13*162)),(1:(3*162)),(1:(5*162)))
  pvalall$Domain<-c(rep("Physical",5*162),rep("Perinatal",11*162),rep("Developmental",3*162),
                   rep("Lifestyle-Life Events",5*162),rep("Parental-Family",13*162),rep("School",3*162),
                   rep("Neighborhood",5*162))
  pvalall$Domain <- factor(pvalall$Domain,
                          levels = c("Physical", "Perinatal", "Developmental", 
                                     "Lifestyle-Life Events", "Parental-Family",
                                     "School","Neighborhood"))
  pvalall[,1]<-ifelse(pvalall[,1]<1e-20,1e-20,pvalall[,1])
  
  names(pvalall)[1]<-"P-Values"
  
  pvalexp.labels= rep("",45*162)
  for (i in c(1:45)){
    j=i*162-81
    pvalexp.labels[j]=rownames(var)[i]
  } #makes list of empyt labels that w
  
  p<-ggplot(pvalall,aes(x = 1:nrow(pvalall), y = -log10(pvalall[,1])))+
    geom_point(aes(color = Domain,size=5),
               alpha = 0.7, size=1)
  p+ylab(expression(atop(" -log10(P-Values)")))+
    ylim(0,20)+
    scale_x_continuous( breaks=c(1:45)*162-81, labels = rownames(var))+
    theme(legend.title=element_blank())+
    theme_classic()+
    theme(axis.text.x = element_text(angle = 45)) +
    theme(axis.title.x = element_blank())+
    theme(axis.title.y = element_text(size = 25))+
    theme(text = element_text(size=25))+
    theme(legend.title=element_blank())+
    theme(legend.position=c(0.8,0.7))+
    geom_abline(slope=0,intercept=-log10(c(var)[astsa::FDR(c(var))]),linetype = "dashed")+
    geom_abline(slope=0,intercept=5.2,linetype = "dashed")+
    ggtitle(maintitle)+
    theme_update(plot.title = element_text(hjust = 0.5))+
    theme(
      legend.box.background = element_rect(),
      legend.box.margin = margin(6, 6, 6, 6))+
    annotate("text",  label = expression(paste("FDR P-value","=0.05")),size=5, x=1000,y=-log10(c(var)[astsa::FDR(c(var))])-0.5, color="black",parse=TRUE)+
    annotate("text",  label = expression(paste("Bonferroni P-value","=0.05")),size=5, x=1200,y=5.7, color="black",parse=TRUE)
}#end of plotting

gender="male"
race="white"
tiff(paste("pvalues_",gender,race,".tiff",sep = ""),1400,900)
pvalplot(var = as.matrix(get_pvals(gender, race)),
         "White Males")

【问题讨论】:

  • 尝试使用theme(plot.title = element_text(hjust = 0.5)) 而不是使用theme_update()。
  • @stefan 几乎工作了啊。现在我只需要调整它们的大小,因为它们有点破坏情节。
  • 谢谢,虽然我认为这让我克服了困难。

标签: r ggplot2 data-visualization


【解决方案1】:

在 ggplot2 的最新版本中,guide_axis() 函数提供对标签旋转和闪避的直接访问(这通常更具可读性),而无需摆弄主题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多