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!
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)