Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
245 views
in Technique[技术] by (71.8m points)

r - How to make geom_path correspond to geom_beeswarm points

I've been trying to visualize the association of several characteristics in a small sample.

Here is an example data:

set.seed(309)
dat <- data.frame(id=c(1:9, 5:9, 7:9),
           count=c(sample(1:4,9, prob=c(.5,.3,.2,.1), replace = T),
                   c(1,1,3,2,4), c(1,2,1)),
           strain=c(rep("A", 9), rep("B", 5), rep("C", 3)))
dat$feature <- (dat$id%%2==0)*1 + (dat$id%%2!=0)*0
dat$id <- as.factor(dat$id)
dat$feature <- factor(dat$feature, labels=c("X","Y"))

I tried it with geom_point like this:

library(ggplot2)
ggplot(dat, aes(x=strain, y=count,group=id))+ 
  geom_point(aes(col=feature), size=10, position = position_dodge(width = 0.5))+
  geom_path(position = position_dodge(width = 0.5))+  theme_minimal()

example 1 with geom_point

The problem is the points are overlapped no matter what width I have in the position_dodge(). geom_beeswarm produces a better looking plot:

library(ggbeeswarm)
ggplot(dat, aes(x=strain, y=count,group=id))+ 
  geom_beeswarm(aes(col=feature), size=10, cex=6.5)+
  geom_path(position = position_dodge(width = 0.5))+  theme_minimal()

example 2 with geom_beeswarm

But the connection with geom_path falls apart. The lines are supposed to connect the records with the same ID.

Is there a way to make geom_path correspond to geom_beeswarm points? Or, is there a way to tweak geom_point to have equally spaced points like geom_beeswarm?

question from:https://stackoverflow.com/questions/65884091/how-to-make-geom-path-correspond-to-geom-beeswarm-points

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...