ggplot中geom_line按y轴连接点,如何调整为按x轴顺序连线?
问题原因
你将color=z写在了ggplot的全局美学映射中,ggplot中所有离散型的美学映射(包括color、fill、shape等)都会自动生成分组,优先级高于单独设置的group参数。geom_line继承了全局的color映射后,会默认按z的取值拆分成多组独立的线段,自然无法按x轴顺序把所有点连为一条完整的线。
另外geom_line默认会先将数据按x轴变量升序排序后再连线,而geom_path会严格按照数据在数据框中的原始顺序连线,你的x列本身就是按1到10的顺序排列的,用geom_path更契合你「按x轴出现顺序连线」的需求,也能避免x为因子类型时可能出现的排序异常。
解决代码
如果不需要连线按z值区分颜色,建议将color映射移到geom_point的独立美学设置中,代码如下:
ggplot(df, aes(x, y)) + geom_point(aes(color = z), size = 3) + geom_path(size = 1, group = 1) + scale_y_discrete(limits = rev)
如果你需要指定连线的颜色,也可以保留全局color映射,在geom_path中手动覆盖color设置即可:
ggplot(df, aes(x, y, color = z)) + geom_point(size = 3) + geom_path(size = 1, group = 1, color = "black") + scale_y_discrete(limits = rev)
内容的提问来源于stack exchange,提问作者user13822027
相关产品推荐
相关产品推荐

