R ggplot2:图形中的坐标图例,其中geom_线和geom_点组合在一起
以下是示例数据框:R ggplot2:图形中的坐标图例,其中geom_线和geom_点组合在一起,r,ggplot2,R,Ggplot2,以下是示例数据框: dt <- data.frame(x = 1:6, y2017 = 5:10, y2018 = 12:17, y2019 = 15:20) # x y2017 y2018 y2019 # 1 5 12 15 # 2 6 13 16 # 3 7 14 17 # 4 8 15 18 # 5 9 16 19 # 6 10 17 20 结果图为
dt <- data.frame(x = 1:6, y2017 = 5:10, y2018 = 12:17, y2019 = 15:20)
# x y2017 y2018 y2019
# 1 5 12 15
# 2 6 13 16
# 3 7 14 17
# 4 8 15 18
# 5 9 16 19
# 6 10 17 20
结果图为:
对于图例2018
和2019
,有一条线穿过这一点,这不是我想要的。因此,我尝试在2017年将geom\u行中的color
移出aes()
结果是:
在2017
的图例中,跨越它的线不再存在,而2018
和2019
是正确的
我想知道是否有一种方法可以将2017
的图例组合在第一张图中,并将2018
和2019
组合在第二张图中。
(我知道我可以使用pivot_longer()
转换数据集,使绘制图例更容易,但对于我的主数据集,这使绘制图例更难。因此我坚持这种方式)ggplot不是为数据结构设计的。考虑替代(重塑成长形式)。
或者,使用基本Rgraphics包中的matplot
,这提供了更多的控制和灵活性
cols <- c('red','blue','green3')
pch <- c(3,4,19)
par(mar=c(4,4,1,6), las=1)
matplot(dt[,'x'], dt[,c('y2017', 'y2018', 'y2019')], type="o", pch=pch, col=cols,
xlab="x", ylab="Y", lty=c(1,0,0))
legend("right", xpd=NA, inset=-0.3, legend=2017:2019, lty=c(1,0,0), pch=pch, col=cols, bty='n')
grid(col=rgb(0,0,0,0.1))
colsggplot不是为数据结构设计的。考虑替代(重塑成长形式)。
或者,使用基本Rgraphics包中的matplot
,这提供了更多的控制和灵活性
cols <- c('red','blue','green3')
pch <- c(3,4,19)
par(mar=c(4,4,1,6), las=1)
matplot(dt[,'x'], dt[,c('y2017', 'y2018', 'y2019')], type="o", pch=pch, col=cols,
xlab="x", ylab="Y", lty=c(1,0,0))
legend("right", xpd=NA, inset=-0.3, legend=2017:2019, lty=c(1,0,0), pch=pch, col=cols, bty='n')
grid(col=rgb(0,0,0,0.1))
cols只需将以下代码添加到程序的第一部分:
guides(shape= guide_legend(override.aes=list(colour=c("#D16103","#52854C", "#293352"), lty=c(1,0,0) )))
然后您将获得以下输出:
只需将以下代码添加到程序的第一部分:
guides(shape= guide_legend(override.aes=list(colour=c("#D16103","#52854C", "#293352"), lty=c(1,0,0) )))
然后您将获得以下输出:
谢谢!!这正是我想要的。请您详细说明一下guide
和guide\u legend
在这里做什么?我阅读了文档,但没有完全理解。您只是覆盖了颜色图例(即删除2018年和2019年的lty=0
行)。当您在aes
中有多个变量时,这通常用于保留单个图例,例如形状。大部分信息都可以在线获取。谢谢!!这正是我想要的。请您详细说明一下guide
和guide\u legend
在这里做什么?我阅读了文档,但没有完全理解。您只是覆盖了颜色图例(即删除2018年和2019年的lty=0
行)。当您在aes
中有多个变量时,这通常用于保留单个图例,例如形状。大部分信息都可以在线获取。