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

如何在R语言的热力图上叠加函数曲线?

在热力图上叠加函数曲线的实现方法

步骤1:生成目标函数的数据集

先根据你热力图横轴p的实际取值范围,生成足够密集的p值序列,再计算对应的f(p)=4/p函数值:

# 假设你的热力图数据存储在data.frame `heat_data`中,横轴列名为p
# 生成100个均匀分布的p值(数量越多曲线越平滑)
p_seq <- seq(min(heat_data$p), max(heat_data$p), length.out = 100)
# 构建函数数据框
func_df <- data.frame(p = p_seq, f_p = 4 / p_seq)

步骤2:叠加曲线到热力图

如果你用ggplot2绘制热力图

直接在原有绘图代码后添加曲线层即可,注意关闭美学映射继承:

library(ggplot2)

# 你的原有热力图代码示例(替换成你实际的代码)
heat_plot <- ggplot(heat_data, aes(x = p, y = y_axis_col, fill = heat_value)) +
  geom_tile() +
  scale_fill_gradient(low = "white", high = "darkblue")

# 叠加点连线形式的函数曲线
heat_plot +
  geom_line(data = func_df, aes(x = p, y = f_p), inherit.aes = FALSE, 
            color = "red", linewidth = 1) +
  geom_point(data = func_df, aes(x = p, y = f_p), inherit.aes = FALSE, 
             color = "red", size = 2) +
  labs(title = "热力图叠加f(p)=4/p曲线")

如果你用基础绘图包绘制热力图

通过par(new=TRUE)开启叠加模式,再用plot()绘制曲线:

# 你的原有基础包热力图代码
heatmap(...)

# 开启叠加,绘制曲线
par(new = TRUE)
plot(p_seq, 4/p_seq, type = "b", col = "red", lwd = 1, pch = 16,
     axes = FALSE, xlab = "", ylab = "")
# 可选:添加右侧坐标轴展示函数值
axis(side = 4, col = "red", col.axis = "red")
mtext("f(p)=4/p", side = 4, line = 3, col = "red")

关键注意点

  • inherit.aes = FALSE:ggplot2中必须设置,避免继承热力图的fill等无关美学映射
  • 曲线颜色、线宽、点样式可根据需求自行调整
  • 确保函数的p值范围和热力图横轴范围完全匹配,避免曲线显示不全

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 09:32:27