0

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?

Uddin
  • 754
  • 5
  • 18

2 Answers2

1

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

Ian Campbell
  • 23,484
  • 14
  • 36
  • 57
1

You might be looking for matplot.

matplot(t(mydf[-1]), pch=16, col=1, xaxt="n")
axis(1, 1:3, names(mydf[-1]))

enter image description here


Data:

set.seed(42)
mydf=data.frame(method=factor(1:10), x1=rpois(10,2), x2=round(rnorm(10),3), x3=rgeom(10,0.3))
jay.sf
  • 60,139
  • 8
  • 53
  • 110