在ggtern中使用geom_segment报错‘Ignoring unknown aesthetics: z and zend’求解决
解决ggtern中geom_segment的z/zend美学报错问题
这不是包的问题,是因为ggtern的geom_segment不需要手动指定z和zend这两个美学映射——三元坐标系的逻辑是三个维度之和固定为1,所以只要给出x/xend和y/yend,第三个维度会自动计算出来,手动传z/zend反而会被判定为未知参数,触发报错。
修正后的代码
直接去掉aes里的z和zend参数即可:
ggtern(df) + geom_segment(aes(x = v1_t1, xend = v1_t2, y = v2_t1, yend = v2_t2), arrow = arrow())
注意事项
- 确保你的数据满足三元图的核心约束:
v1_t1 + v2_t1 + v3_t1 = 1,v1_t2 + v2_t2 + v3_t2 = 1,不然生成的图会有偏差。 - 如果需要自定义箭头样式,可以在
arrow()里添加参数,比如arrow(length = unit(0.2, "cm"), type = "closed")来调整箭头大小和形状。
示例数据参考
如果需要测试效果,可以用下面的示例数据:
df <- data.frame( v1_t1 = c(0.2, 0.3), v2_t1 = c(0.3, 0.4), v3_t1 = c(0.5, 0.3), # 这列无需在aes中传入 v1_t2 = c(0.4, 0.2), v2_t2 = c(0.2, 0.5), v3_t2 = c(0.4, 0.3) )
内容的提问来源于stack exchange,提问作者KLH
相关产品推荐
相关产品推荐

