我有以下数据框
library(ggplot2)
set.seed(149)
x <- data.frame(
region = factor(rep(1:10, each = 2)),
group = rep(c("O", "E"), 10),
mean = sample(1:2, 20, replace = TRUE)
)
x
region group mean
1 1 O 2
2 1 E 1
3 2 O 1
4 2 E 2
5 3 O 1
6 3 E 1
7 4 O 1
8 4 E 1
9 5 O 1
10 5 E 2
11 6 O 2
12 6 E 2
13 7 O 1
14 7 E 1
15 8 O 1
16 8 E 1
17 9 O 1
18 9 E 2
19 10 O 1
20 10 E 1
Run Code Online (Sandbox Code Playgroud)
我试图创建一个棒棒糖图表,这样我就可以使每个区域(无论是“O”或“E”)之间的简单比较。我会制作一个哑铃图,但是该地区的两组中很多都是相同的,因此哑铃图最终看起来很像点状图。
到目前为止,这就是我所拥有的...
ggplot(x, aes(y = region, x = mean, label = mean, fill = group, colour = group)) +
geom_segment(aes(x = 0, y = region, xend = mean, yend = region), color = "grey50", size = 0.75) +
geom_point(size = 3) +
geom_text(nudge_x = 1.5, angle = -45)
Run Code Online (Sandbox Code Playgroud)
基本上,我想为每个区域绘制两条线,一条线用于“ O”组,另一条线用于“ E”组。
我们可以通过使用geom_linerange(“棒”),geom_point(“糖果”)并指定position = position_dodge以下内容来完成此操作:
ggplot(x)+
geom_linerange(aes(x = region, ymin = 0, ymax = mean, colour = group),
position = position_dodge(width = 1))+
geom_point(aes(x = region, y = mean, colour = group),
position = position_dodge(width = 1))+
coord_flip()
Run Code Online (Sandbox Code Playgroud)