Search code examples
rplotmultiple-columnsdot

Dot plot of all columns in R against the column number


Suppose I have a data frame like below

mydf=data.frame(method=factor(1:10), x1=rpois(10,2), x2=round(rnorm(10),3), x3=rgeom(10,0.3))

I would like to make a dot plot of all variables from X1 through X3 in the same figure. I tried the following code

plot(mydf$x1~rep(1,10), xlab="", ylab = "")
plot(mydf$x2~rep(2,10), xlab="", ylab = "")
plot(mydf$x3~rep(3,10), xlab="", ylab = "")

How can I plot them in single figure?


Solution

  • Probably not what you had in mind, but maybe give ggplot a try?

    library(dplyr)
    library(tidyr)
    library(ggplot)
    mydf %>% 
       pivot_longer(-method, names_to = "variable") %>% 
    ggplot(aes(x = variable, y = value)) +
      geom_point()
    

    enter image description here

    Otherwise, just use points instead of plot:

    plot(mydf$x1~rep(1,10), xlab="", ylab = "", xlim = c(0.5,3.5), ylim = range(mydf[,2:4]), xaxt = 'n')
    points(mydf$x2~rep(2,10))
    points(mydf$x3~rep(3,10))
    axis(1,at = 1:3)
    

    enter image description here