rotate X axis labels 45 degrees on grouped bar plot R

前端 未结 3 646
心在旅途
心在旅途 2020-12-17 22:43

How can I rotate the X axis labels 45 degrees on a grouped bar plot in R?

I have tried the solution suggested here but got something very messy, the labels seem to h

3条回答
  •  遥遥无期
    2020-12-17 23:11

    I am not a base plot proficient, so maybe my solution is not very simple. I think that using ggplot2 is better here.

    enter image description here

    def.par <- par(no.readonly = TRUE)
    
    ## divide device into two rows and 1 column 
    ## allocate figure 1  for barplot
    ## allocate figure 2 for barplot labels
    ## respect relations between widths and heights
    
    nf <- layout(matrix(c(1,1,2,2),2,2,byrow = TRUE), c(1,3), c(3,1), TRUE)
    layout.show(nf)
    
    ## barplot 
    par(mar = c(0,1,1,1))
    set.seed(1)
    nKol <- 8  ## you can change here but more than 11 cols 
               ## the solution is not really readable
    data <- matrix(sample(1:4,nKol*4,rep=TRUE),ncol=nKol)
    xx <- barplot(data, beside=TRUE,
                  col=c("darkred","red","grey20","grey40"))
    
    ## labels , create d ummy plot for sacles
    par(mar = c(1,1,0,1))
    plot(seq_len(length(xx)),rep(1,length(xx)),type='n',axes=FALSE)
    ## Create some text labels 
    labels <- paste("Label", seq_len(ncol(xx)), sep = " ")
    ## Plot text labels with some rotation at the top of the current figure
    text(seq_len(length(xx)),rep(1.4,length(xx)), srt = 90, adj = 1,
         labels = labels, xpd = TRUE,cex=0.8,srt=60,
         col=c("darkred","red","grey20","grey40"))
    
    par(def.par)  #- reset to default
    

提交回复
热议问题