How to rotate the x-axis labels 90 degrees in levelplot

14,620

As far as the rotation of the x-axis labels go, you have to use parameter scales (see ?xyplot for more information on lattice parameters). You want to modify only its x component: scales=list(x=list(rot=90)). In context:

levelplot(cor2,
          aspect="iso", scales=list(x=list(rot=90)),
          main="Correlation Matrix", col.regions=rgb.palette(120),
          cuts=100, at=seq(0,1,0.01))
Share:
14,620

Related videos on Youtube

Atticus29
Author by

Atticus29

Updated on June 13, 2022

Comments

  • Atticus29
    Atticus29 about 2 years

    I'm trying to visualize a correlation map, and I think that I've gotten it to work, except for the jumbling of the x-axis labels. Any suggestions for how to rotate them? Some of the parameters for many of the Base R plots don't seem available for levelplots. It's possible that I don't know what I'm talking about.

    This is the data I used:

    cor2<-structure(c(1, -0.0389681095266643, -0.0389681095266643, 0.178476154216706, 
    -0.178476154216706, -0.168494117498168, -0.0531355593389041, 
    -0.0627159607856109, -0.11922152176561, 0.00887070126495505, 
    -0.0721998017906867, -0.140654273521441, 0.0257953297166468, 
    -0.0504004052031319, -0.057270788080051, -0.0918121581058645, 
    -0.0389681095266643, 1, 1, -0.207885482210833, 0.207885482210833, 
    0.221906241587463, 0.285338260198777, 0.370743678038144, 0.219208701879567, 
    0.266580102221828, 0.193378655575033, 0.23922965323291, 0.164352387360997, 
    0.229607796224011, 0.184412911672718, -0.250294366329347, -0.0389681095266643, 
    1, 1, -0.207885482210833, 0.207885482210833, 0.221906241587463, 
    0.285338260198777, 0.370743678038144, 0.219208701879567, 0.266580102221828, 
    0.193378655575033, 0.23922965323291, 0.164352387360997, 0.229607796224011, 
    0.184412911672718, -0.250294366329347, 0.178476154216706, -0.207885482210833, 
    -0.207885482210833, 1, -1, -0.836264694082863, 0.0968492347163521, 
    -0.529206721168992, -0.368511719318385, -0.370488391611307, -0.446552321746797, 
    -0.0946404317035884, -0.166601542941319, -0.371982811624152, 
    -0.0551151773556682, -0.0252777576827408, -0.178476154216706, 
    0.207885482210833, 0.207885482210833, -1, 1, 0.836264694082863, 
    -0.0968492347163521, 0.529206721168992, 0.368511719318385, 0.370488391611307, 
    0.446552321746797, 0.0946404317035884, 0.166601542941319, 0.371982811624152, 
    0.0551151773556682, 0.0252777576827408, -0.168494117498168, 0.221906241587463, 
    0.221906241587463, -0.836264694082863, 0.836264694082863, 1, 
    -0.0484257163697656, 0.493261440648374, 0.421352971692481, 0.335283617372406, 
    0.42535494057661, 0.0277745485055271, 0.0990554932499753, 0.268268745412774, 
    0.106129159123147, 0.0645326205432567, -0.0531355593389041, 0.285338260198777, 
    0.285338260198777, 0.0968492347163521, -0.0968492347163521, -0.0484257163697656, 
    1, -0.525318257575221, -0.160726744335619, -0.530266513726872, 
    -0.523896249354085, 0.0821688285842216, 0.120061871987285, -0.0462809753885581, 
    0.0894673511307366, -0.157709074647179, -0.0627159607856109, 
    0.370743678038144, 0.370743678038144, -0.529206721168992, 0.529206721168992, 
    0.493261440648374, -0.525318257575221, 1, 0.450831181390043, 
    0.894070902852474, 0.937461049803717, 0.120717838386174, 0.0922093724569894, 
    0.421886104540215, 0.0686035045695465, -0.0259181463830899, -0.11922152176561, 
    0.219208701879567, 0.219208701879567, -0.368511719318385, 0.368511719318385, 
    0.421352971692481, -0.160726744335619, 0.450831181390043, 1, 
    0.194931612275736, 0.475810998910999, 0.0674296214446775, 0.0665009602984884, 
    0.181289860729344, -0.0399243218645222, -0.0918283721705961, 
    0.00887070126495505, 0.266580102221828, 0.266580102221828, -0.370488391611307, 
    0.370488391611307, 0.335283617372406, -0.530266513726872, 0.894070902852474, 
    0.194931612275736, 1, 0.955425650934062, 0.0881868869011078, 
    0.139156258136006, 0.310078412850343, 0.137566770975812, -0.0893525009590147, 
    -0.0721998017906867, 0.193378655575033, 0.193378655575033, -0.446552321746797, 
    0.446552321746797, 0.42535494057661, -0.523896249354085, 0.937461049803717, 
    0.475810998910999, 0.955425650934062, 1, 0.0988326951129949, 
    0.147058790355866, 0.336760945050752, 0.110616903520016, -0.107521647802021, 
    -0.140654273521441, 0.23922965323291, 0.23922965323291, -0.0946404317035884, 
    0.0946404317035884, 0.0277745485055271, 0.0821688285842216, 0.120717838386174, 
    0.0674296214446775, 0.0881868869011078, 0.0988326951129949, 1, 
    0.746502805562635, 0.144029358291222, 0.496146773442592, -0.464865772986093, 
    0.0257953297166468, 0.164352387360997, 0.164352387360997, -0.166601542941319, 
    0.166601542941319, 0.0990554932499753, 0.120061871987285, 0.0922093724569894, 
    0.0665009602984884, 0.139156258136006, 0.147058790355866, 0.746502805562635, 
    1, 0.068339761274059, 0.546006730280353, -0.392180163611345, 
    -0.0504004052031319, 0.229607796224011, 0.229607796224011, -0.371982811624152, 
    0.371982811624152, 0.268268745412774, -0.0462809753885581, 0.421886104540215, 
    0.181289860729344, 0.310078412850343, 0.336760945050752, 0.144029358291222, 
    0.068339761274059, 1, -0.118872875719514, 0.0250634712618911, 
    -0.057270788080051, 0.184412911672718, 0.184412911672718, -0.0551151773556682, 
    0.0551151773556682, 0.106129159123147, 0.0894673511307366, 0.0686035045695465, 
    -0.0399243218645222, 0.137566770975812, 0.110616903520016, 0.496146773442592, 
    0.546006730280353, -0.118872875719514, 1, -0.0649756207052158, 
    -0.0918121581058645, -0.250294366329347, -0.250294366329347, 
    -0.0252777576827408, 0.0252777576827408, 0.0645326205432567, 
    -0.157709074647179, -0.0259181463830899, -0.0918283721705961, 
    -0.0893525009590147, -0.107521647802021, -0.464865772986093, 
    -0.392180163611345, 0.0250634712618911, -0.0649756207052158, 
    1), .Dim = c(16L, 16L), .Dimnames = list(c("ID", "QnWeight_initial", 
    "QnWeight_initial_mg", "Days_till_1st_Wrkr", "Days_before_max_Wrkr_Eclosion", 
    "Wrkr_Eclosion_Bin", "QnMass_At_Wrkr_Eclosion", "ColonyMass_At_Wrkr_Eclosion", 
    "Adult_Wrkrs_At_Wrkr_Eclosion", "Mature_Brood_At_Wrkr_Eclosion", 
    "Sum_wrkrsPlusBrood_At_Wrkr_Eclosion", "QnMass_2wksLater", "QnMass_4wksLater", 
    "ColonyMass_4wksLater", "QnMass_2mnthsLater", "ColonyMass_2mnthsLater"
    ), c("ID", "QnWeight_initial", "QnWeight_initial_mg", "Days_till_1st_Wrkr", 
    "Days_before_max_Wrkr_Eclosion", "Wrkr_Eclosion_Bin", "QnMass_At_Wrkr_Eclosion", 
    "ColonyMass_At_Wrkr_Eclosion", "Adult_Wrkrs_At_Wrkr_Eclosion", 
    "Mature_Brood_At_Wrkr_Eclosion", "Sum_wrkrsPlusBrood_At_Wrkr_Eclosion", 
    "QnMass_2wksLater", "QnMass_4wksLater", "ColonyMass_4wksLater", 
    "QnMass_2mnthsLater", "ColonyMass_2mnthsLater")))
    

    My code:

    rgb.palette <- colorRampPalette(c("blue", "yellow"), space = "rgb")
    levelplot(cor2, aspect="iso", main="Correlation Matrix", xlab="", xaxt='n', ylab="", col.regions=rgb.palette(120), cuts=100, at=seq(0,1,0.01)) #, names.arg=paste(cor2[,1]),las=3
    
    #this is what I tried, and it didn't work. I couldn't get names(cor2) to work, but I guess that this is a separate question.
    labs<- (cor2[,0])
    text(cex=1, x=x-0.25, y=-1.5, labs, xpd=TRUE, srt=90)
    
    ##want something like this, but can't find an analogous way to remove axisnames and add text
    #x <- barplot(table(mtcars$cyl),axisnames=FALSE)#,xaxt="n" 
    #labs <- paste(names(table(mtcars$cyl)), "cylinders")
    #text(cex=1, x=x-0.25, y=-1.5, labs, xpd=TRUE, srt=90)
    
    • bdemarest
      bdemarest almost 12 years
      It looks like you will need to dig deep into lattice (and maybe grid) to do this. For starters, you want the lattice function ltext() instead of base graphics text(). Also, for the labels you need labs <- colnames(cor2).
  • Michael Trouw
    Michael Trouw about 10 years
    worked, awesome. However i have a question: why do you have to specify the x scales property/list and does: labelrotation = c(0, 90) scales=list(rot=labelrotation) not work, since rotation can be a vector specifying rotation for both the x and y axis?
  • plannapus
    plannapus about 10 years
    That's a good question (you should maybe ask it as a proper question to get more visibility) to which i'm not sure how to answer. From the documentation i read rot Angle (in degrees) by which the axis labels are to be rotated. Can be a vector of length 2, to control left/bottom and right/top axes separately. which makes me think that it's not supposed to be a x/y vector (otherwise it would be " left and bottom " separately and not "left/bottom and right/top axes separately").