![](/img/trans.png)
[英]R - ggplot - overlying line plot with single points, empty series for geom_points() causes error
[英]How to plot a line connecting geom_points for repeated measures in R?
我正在尋找一種方法來連接我的 ggplot 中的各個數據點,以便表明數據是隨着時間的推移對同一個人的重復測量。 到目前為止,我已經成功地創建了一個條形圖,上面有單獨的 geom_point(每個主題的數據點)。 但是,我想將三個時間點之間與同一參與者匹配的點連接起來。 任何指針?
## Example data, data from two groups: patients and controls
data_ex <- data.frame( pnum = c(1,2,3,4,5,6,7,8,9,10),
group = c("patient", "patient","patient","patient","patient","control","control","control", "control", "control"),
age = c(24,35,43,34,55,24,36,43,34,54),
panas_1.1 = c(-26, -15, -17, -15, -20, -21, -18, -19, -16, -20),
panas_1.2 = c(-25, -19, -14, -18, -20, -22, -17, -19, -18, -19),
panas_1.3 = c(-22, -21, -18, -14, -21, -21, -14, -17, -16, -18))
## Reshape the data
data_ex_long <- data_ex %>% gather(key = time, value = PANAS_score, panas_1.1, panas_1.2, panas_1.3)
## plot the data
ggplot(data=data_ex_long,aes(x = time, y = PANAS_score, fill = group)) +
geom_bar(stat = "summary",fun.y = 'mean', colour="black", size=1.8, position = position_dodge(width = 1)) +
geom_point(aes(time, fill = group), colour="black", size = 3, shape = 21, position =
position_jitterdodge(jitter.width = 0.2, jitter.height=0.4,
dodge.width=0.9), alpha = 0.8) +
geom_errorbar(aes(size=2),stat = 'summary', position = 'dodge', color = "black", width = 1, size = 1, fatten = 2) +
theme(text = element_text(size = 18),
legend.position = "none",
axis.text.x = element_text(size=15, color="#000000"),
axis.text.y = element_text(size=20, color="#000000"),
axis.title.x = element_blank(),
axis.title.y = element_text(size=18, color="#000000"),
axis.line.x = element_line(colour = "black", size = 1.3),
axis.line.y = element_line(colour = "black", size = 1.3),
panel.border = element_blank(),
panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
panel.grid.minor.x = element_blank(), panel.grid.major.x = element_blank(),
panel.background = element_blank(),
axis.ticks.length = unit(.25, "cm"),
axis.line = element_line()) +
ylab(" PANAS score ") +
NULL
你可以試試
pd <- position_dodge(0.8)
ggplot(data=data_ex_long,aes(x = time, y = PANAS_score, fill = factor(group, levels = c("patient", "control")))) +
geom_bar(stat = "summary",fun.y = 'mean', color=1, position = "dodge") +
geom_point(aes(group=pnum),position = pd, shape =21) +
geom_line(aes(group=pnum),position = pd) +
geom_errorbar(stat = 'summary', position = "dodge") +
scale_fill_discrete("")
根據您的評論,我建議完全切換到stat_summary
pd <- position_dodge(.9)
data_ex_long$group <- factor(data_ex_long$group, levels = c("patient", "control"))
ggplot(data=data_ex_long,aes(x = time, y = PANAS_score, fill = group)) +
stat_summary(fun.y = "mean", geom = "bar",position = pd) +
stat_summary(aes(group = group),
fun.y = "mean", geom = "line",position = pd, size= 1.5 ) +
stat_summary(fun.data = mean_se, geom = "errorbar",position = pd, width = 0.3) +
geom_point(aes(group=pnum),position = pd, shape =21)
使用ggplot2_3.1.0
我正在嘗試做類似的情節,但正在努力! 我有兩個重復測量因素,而不是一個重復測量和獨立的小組。 因此,在我的x軸上,我有一個之前和之后的葯物測量值,前兩個框圖(靜止與動作的顏色不同),后兩個框圖(不同顏色的靜止與動作的坐標)。 我希望能夠顯示每個主題的趨勢,四個4個圖中每個圖都有一個數據點。
以下是箱形圖,每個箱形圖帶有抖動點,但是我想用一條線連接各個主題的點。
p <- ggplot(df, aes(x=Group, y=PLV, fill=Move)) +
geom_boxplot(outlier.size = -1) +
geom_point(df,mapping=aes(x=Group, y=PLV, fill=Move), position = position_jitterdodge 0.2)
df:
1 Before Rest 0.22238
2 Before Rest 0.21670
3 Before Rest 0.21443
4 Before Rest 0.22624
5 Before Move 0.22796
6 Before Move 0.22217
7 Before Move 0.21418
8 Before Move 0.21679
9 After Rest 0.36057
10 After Rest 0.26613
11 After Rest 0.27747
12 After Rest 0.32213
13 After Move 0.35226
14 After Move 0.27122
15 After Move 0.26650
16 After Move 0.28785
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.