You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用ggplot2的geom_contour绘制大于指定值的等高线?

用ggplot2绘制大于指定阈值的等高线

你想用geom_contour()显示所有密度大于0.00384的等高线,但直接写breaks>0.00384会触发mapping must be created by aes()错误——这是因为breaks参数需要接收具体的数值向量,不能直接用逻辑表达式。

解决方法

先从数据里筛选出符合条件的等高线断点,再传给breaks参数即可:

library(ggplot2)

# 从faithfuld数据中提取所有大于0.00384的密度值作为断点
target_breaks <- unique(faithfuld$density[faithfuld$density > 0.00384])

# 绘制所有符合条件的等高线
(v <- ggplot(faithfuld, aes(waiting, eruptions, z = density)))
v + geom_contour(breaks = target_breaks)

如果想要更规整的连续断点(而非直接用数据里的原始离散值),可以用scales包的断点生成函数:

library(scales)
# 生成适配的连续断点
target_breaks <- breaks_continuous()(faithfuld$density[faithfuld$density > 0.00384])

错误原因说明

直接写breaks>0.00384时,R会把它当成逻辑判断语句,而非geom_contour()需要的合法参数格式,因此弹出了映射相关的错误。必须传入明确的数值集合作为断点参数。

内容的提问来源于stack exchange,提问作者L55

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 10:34:59