如何用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
相关产品推荐
相关产品推荐

