使用 geom_segment 将线添加到 ggplot 时出错
Error when using geom_segment to add a line into a ggplot
我想使用 geom_segment 在此图中添加一条线,但是当我 运行 以下代码时出现此错误“手动比例中的值不足。需要 3 个,但只提供了 2 个” .我想知道如何解决这个问题。
Age Alcohol sex X0.025 X0.975 L_LCI L_UCI U_LCI U_UCI
1.000 211 Female 191.26 416.98 176.530 200.98 360.19 483.78
1.025 281 Female 300.20 306.03 166.300 310.10 300.28 381.77
1.103 195 Female 168.20 706.03 150.300 200.10 330.28 790.77
1.144 350 Female 148.20 506.03 100.300 150.10 390.28 510.77
1.156 256 Female 396.20 416.03 300.300 400.10 390.28 481.77
2.922 336 Male 396.20 416.03 300.300 400.10 390.28 481.77
3 110 Male 191.26 416.98 176.530 200.98 360.19 483.78
1 410 Male 396.20 416.03 300.300 400.10 390.28 481.77
1.001 501 Male 155.90 350.93 143.210 168.59 330.27 371.60
5 701 Male 155.76 349.35 143.210 168.30 329.95 368.76
1.289 165 Male 184.34 388.74 160.910 199.76 331.66 445.82
SP=ggplot(Data, aes(x=Age, y= Alcohol,color=sex,fill=sex))+
geom_point()+
scale_shape_manual(values=c(1,1), name='sex', labels=c('Female','Male'))+ #0.25
geom_line(aes(x = Age, y = X0.025),size=1) +
geom_line(aes(x = Age, y = X0.975),size=1) +
geom_ribbon(aes(x = Age, ymin = L_LCI,ymax=L_UCI),alpha = 0.2,linetype=0) +
geom_ribbon(aes(x = Age, ymin = U_LCI,ymax= U_UCI),alpha =0.2,linetype=0) +
labs(x = 'Age (Years)', y = '')+
scale_x_continuous(breaks = round(seq(1, 19, by = 1),0)) +
scale_y_continuous(expand = c(0, 0),breaks = round(seq(0, 600, by = 100),0))+
scale_color_manual(breaks = c("Female", "Male"),
values=c("#EC6696", "#558ED5"))+
scale_fill_manual(breaks = c("Female", "Male"),
values=c("#EC6696", "#558ED5"))+
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
axis.title.x=element_text(size=15,face="bold"), axis.title.y=element_text(size=15,face="bold"),axis.text.x=element_text(size=13),
axis.text.y=element_text(size=13),
panel.background = element_blank(), axis.line = element_line(colour = "black"),plot.title = element_text(vjust=-15,hjust=0.02,
color="black", size=20,face="bold"))+
ggtitle("Tile")+ coord_cartesian(xlim = c(1,19), ylim = c(0,700))+
theme(legend.text=element_text(size=12, face = "bold"),legend.key.size = unit(1.5, 'lines'), legend.spacing.x = unit(0.1, 'cm'),legend.justification = c(0, 1.5),legend.position = c(0, 1),
legend.box.margin=margin(c(10,10,10,10)))+theme(legend.title = element_blank())+
guides(color = guide_legend(override.aes = list(size = 1.3)))
SP+ geom_segment(aes(x = 1, y = 156, xend = 1, yend = 156,colour ="black"))
试试这个:
SP <- ggplot(Data)+
geom_point(aes(x=Age, y= Alcohol, color=sex, fill=sex))+
scale_shape_manual(values=c(1,1), name='sex', labels=c('Female','Male'))+ #0.25
geom_line(aes(x = Age, y = X0.025, color=sex),size=1) +
geom_line(aes(x = Age, y = X0.975, color=sex),size=1) +
geom_ribbon(aes(x = Age, ymin = L_LCI, ymax=L_UCI, color=sex,fill=sex),alpha = 0.2,linetype=0) +
geom_ribbon(aes(x = Age, ymin = U_LCI, ymax= U_UCI, color=sex, fill=sex),alpha =0.2,linetype=0) +
labs(x = 'Age (Years)', y = '')+
scale_x_continuous(breaks = round(seq(1, 19, by = 1),0)) +
scale_y_continuous(expand = c(0, 0),breaks = round(seq(0, 600, by = 100),0))+
scale_color_manual(breaks = c("Female", "Male"),
values=c("#EC6696", "#558ED5"))+
scale_fill_manual(breaks = c("Female", "Male"),
values=c("#EC6696", "#558ED5"))+
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
axis.title.x=element_text(size=15,face="bold"), axis.title.y=element_text(size=15,face="bold"),axis.text.x=element_text(size=13),
axis.text.y=element_text(size=13),
panel.background = element_blank(), axis.line = element_line(colour = "black"),plot.title = element_text(vjust=-15,hjust=0.02, color="black", size=20,face="bold"))+
ggtitle("Tile")+ coord_cartesian(xlim = c(1,19), ylim = c(0,700))+
theme(legend.text=element_text(size=12, face = "bold"),legend.key.size = unit(1.5, 'lines'), legend.spacing.x = unit(0.1, 'cm'),legend.justification = c(0, 1.5),legend.position = c(0, 1),
legend.box.margin=margin(c(10,10,10,10)))+theme(legend.title = element_blank())+
guides(color = guide_legend(override.aes = list(size = 1.3)))
df <- data.frame(x1 = 1, y1 = 156, x2 = 1, y2 = 156)
SP + geom_segment(aes(x = x1, xend = x2, y = y1, yend = y2), colour ="black", data = df)
请注意,该段不会很明显,因为根据您的坐标,它在同一点开始和结束。
我想使用 geom_segment 在此图中添加一条线,但是当我 运行 以下代码时出现此错误“手动比例中的值不足。需要 3 个,但只提供了 2 个” .我想知道如何解决这个问题。
Age Alcohol sex X0.025 X0.975 L_LCI L_UCI U_LCI U_UCI
1.000 211 Female 191.26 416.98 176.530 200.98 360.19 483.78
1.025 281 Female 300.20 306.03 166.300 310.10 300.28 381.77
1.103 195 Female 168.20 706.03 150.300 200.10 330.28 790.77
1.144 350 Female 148.20 506.03 100.300 150.10 390.28 510.77
1.156 256 Female 396.20 416.03 300.300 400.10 390.28 481.77
2.922 336 Male 396.20 416.03 300.300 400.10 390.28 481.77
3 110 Male 191.26 416.98 176.530 200.98 360.19 483.78
1 410 Male 396.20 416.03 300.300 400.10 390.28 481.77
1.001 501 Male 155.90 350.93 143.210 168.59 330.27 371.60
5 701 Male 155.76 349.35 143.210 168.30 329.95 368.76
1.289 165 Male 184.34 388.74 160.910 199.76 331.66 445.82
SP=ggplot(Data, aes(x=Age, y= Alcohol,color=sex,fill=sex))+
geom_point()+
scale_shape_manual(values=c(1,1), name='sex', labels=c('Female','Male'))+ #0.25
geom_line(aes(x = Age, y = X0.025),size=1) +
geom_line(aes(x = Age, y = X0.975),size=1) +
geom_ribbon(aes(x = Age, ymin = L_LCI,ymax=L_UCI),alpha = 0.2,linetype=0) +
geom_ribbon(aes(x = Age, ymin = U_LCI,ymax= U_UCI),alpha =0.2,linetype=0) +
labs(x = 'Age (Years)', y = '')+
scale_x_continuous(breaks = round(seq(1, 19, by = 1),0)) +
scale_y_continuous(expand = c(0, 0),breaks = round(seq(0, 600, by = 100),0))+
scale_color_manual(breaks = c("Female", "Male"),
values=c("#EC6696", "#558ED5"))+
scale_fill_manual(breaks = c("Female", "Male"),
values=c("#EC6696", "#558ED5"))+
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
axis.title.x=element_text(size=15,face="bold"), axis.title.y=element_text(size=15,face="bold"),axis.text.x=element_text(size=13),
axis.text.y=element_text(size=13),
panel.background = element_blank(), axis.line = element_line(colour = "black"),plot.title = element_text(vjust=-15,hjust=0.02,
color="black", size=20,face="bold"))+
ggtitle("Tile")+ coord_cartesian(xlim = c(1,19), ylim = c(0,700))+
theme(legend.text=element_text(size=12, face = "bold"),legend.key.size = unit(1.5, 'lines'), legend.spacing.x = unit(0.1, 'cm'),legend.justification = c(0, 1.5),legend.position = c(0, 1),
legend.box.margin=margin(c(10,10,10,10)))+theme(legend.title = element_blank())+
guides(color = guide_legend(override.aes = list(size = 1.3)))
SP+ geom_segment(aes(x = 1, y = 156, xend = 1, yend = 156,colour ="black"))
试试这个:
SP <- ggplot(Data)+
geom_point(aes(x=Age, y= Alcohol, color=sex, fill=sex))+
scale_shape_manual(values=c(1,1), name='sex', labels=c('Female','Male'))+ #0.25
geom_line(aes(x = Age, y = X0.025, color=sex),size=1) +
geom_line(aes(x = Age, y = X0.975, color=sex),size=1) +
geom_ribbon(aes(x = Age, ymin = L_LCI, ymax=L_UCI, color=sex,fill=sex),alpha = 0.2,linetype=0) +
geom_ribbon(aes(x = Age, ymin = U_LCI, ymax= U_UCI, color=sex, fill=sex),alpha =0.2,linetype=0) +
labs(x = 'Age (Years)', y = '')+
scale_x_continuous(breaks = round(seq(1, 19, by = 1),0)) +
scale_y_continuous(expand = c(0, 0),breaks = round(seq(0, 600, by = 100),0))+
scale_color_manual(breaks = c("Female", "Male"),
values=c("#EC6696", "#558ED5"))+
scale_fill_manual(breaks = c("Female", "Male"),
values=c("#EC6696", "#558ED5"))+
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
axis.title.x=element_text(size=15,face="bold"), axis.title.y=element_text(size=15,face="bold"),axis.text.x=element_text(size=13),
axis.text.y=element_text(size=13),
panel.background = element_blank(), axis.line = element_line(colour = "black"),plot.title = element_text(vjust=-15,hjust=0.02, color="black", size=20,face="bold"))+
ggtitle("Tile")+ coord_cartesian(xlim = c(1,19), ylim = c(0,700))+
theme(legend.text=element_text(size=12, face = "bold"),legend.key.size = unit(1.5, 'lines'), legend.spacing.x = unit(0.1, 'cm'),legend.justification = c(0, 1.5),legend.position = c(0, 1),
legend.box.margin=margin(c(10,10,10,10)))+theme(legend.title = element_blank())+
guides(color = guide_legend(override.aes = list(size = 1.3)))
df <- data.frame(x1 = 1, y1 = 156, x2 = 1, y2 = 156)
SP + geom_segment(aes(x = x1, xend = x2, y = y1, yend = y2), colour ="black", data = df)
请注意,该段不会很明显,因为根据您的坐标,它在同一点开始和结束。