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
  • 712
  • 4
  • 13

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
  • 21,281
  • 13
  • 26
  • 51
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
  • 46,523
  • 6
  • 46
  • 87