rplot

Flipping the X and Y values in a plot in R (with the data changing axes as well)


How do I make a plot in R so that the value of a variable displays along the X axis and the variable names go vertically along the Y axis? Ultimately, the plot should look vertical with the variable names on the Y axis and its values on the X axis.

The code below will ostensibly do it, but the problem is the actually plot values do not flip with the axes. Meaning, the plot still constructs as if the names are along the X axis and the values are along the Y axis.

the variables below:

value = a column vector of numbers

name = a column of names that correspond to each number

plot(value, axes=F, xlab="", ylab= "", type= "b", xlim=c(-5, 50), ylim=c(0, 8))
axis(1)
axis(2, at = 1:length(name), labels = name, las=1, pos=-3.0,cex.axis=.65 )

thanks!


Solution

  • For easy flexibility in this regard, I like the plotting functions in the lattice package:

     library(lattice)
    
     # First make some example data
     df <- data.frame(name=rep(c("a", "b", "c"), each=5), value=rnorm(15))
    
     # Then try plotting it in both 'orientations'
     # ... as a dotplot
     xyplot(value~name, data=df)
     xyplot(name~value, data=df)
    
     # ... or perhaps as a 'box-and-whisker' plot
     bwplot(value~name, data=df)
     bwplot(name~value, data=df)
    

    If you need to, you can also plot this with base graphics, though you'll have to work a bit on the axis labels:

    plot(x=df$value, y=df$name, yaxt="n",
         xlab="value", ylab="name")
    axis(2, at=1:3, labels=levels(df$name), las=1)