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

如何在同一张图中绘制两个带权重的直方图?

加权直方图叠加绘制方案

方法1:使用weights包实现基础绘图叠加

wtd.hist支持通过add=TRUE参数将第二个直方图叠加到已绘制的画布上,配合参数调整可让效果更清晰:

install.packages("weights")
library(weights)

w1 <- seq(1,500)
v1 <- sort(runif(500))

w2 <- seq(1,1000)
v2 <- sort(runif(1000))

# 绘制第一个加权直方图,设置基础画布参数
wtd.hist(w1+1, weight=v1, breaks=100, xlim=c(0, 100), 
         col=rgb(1,0,0,0.5), main="加权直方图叠加", xlab="数值")
# 叠加第二个直方图,add=TRUE是核心参数
wtd.hist(w2, weight=v2, breaks=100, col=rgb(0,0,1,0.5), add=TRUE)
# 添加图例区分两组数据
legend("topright", legend=c("数据集1", "数据集2"), 
       fill=c(rgb(1,0,0,0.5), rgb(0,0,1,0.5)))
  • 调整breaks数量避免柱子过密,这里设为100更合理
  • 用rgb()设置半透明颜色,重叠区域可清晰显示
  • add=TRUE强制将第二个直方图绘制在已有画布上

方法2:使用ggplot2绘制(需合并数据集)

虽然需要合并数据集,但ggplot2的可视化样式更灵活,通过weight参数指定权重,position="identity"实现叠加效果:

library(ggplot2)

# 将两个数据集整理为统一格式
df1 <- data.frame(value = w1+1, weight = v1, group = "数据集1")
df2 <- data.frame(value = w2, weight = v2, group = "数据集2")
df_combined <- rbind(df1, df2)

# 绘制加权叠加直方图
ggplot(df_combined, aes(x=value, weight=weight, fill=group)) +
  geom_histogram(breaks=seq(0,100,1), position="identity", alpha=0.5) +
  xlim(0,100) +
  labs(title="加权直方图叠加", x="数值", y="加权频数") +
  scale_fill_manual(values=c("数据集1"="red", "数据集2"="blue")) +
  theme_minimal()
  • position="identity"确保直方图叠加而非堆叠或并列
  • alpha=0.5设置填充透明度,解决遮挡问题
  • 统一的数据集格式更便于后续调整分组样式

内容的提问来源于stack exchange,提问作者Luis M. García

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:14:56