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

如何在R中按采样日单独绘制数据集的直方图?

解决方案

第一步:规范日期列格式

先确保Date列是可识别的日期类型,避免分组出错:

# 根据你的实际日期格式调整format参数,比如"%Y/%m/%d"或"%d-%b-%Y"
WPTD2$Date <- as.Date(WPTD2$Date, format = "%Y-%m-%d")
# 转为因子,每个日期对应一个独立水平
WPTD2$Sampling_Day <- as.factor(WPTD2$Date)

用Base R绘制单采样日直方图

通过subset()筛选指定日期的数据,再传入hist():

# 绘制第一个采样日的直方图
hist(subset(WPTD2, Sampling_Day == levels(Sampling_Day)[1])$Distance,
     xlab = '垂直距离',
     ylab = '观测数量',
     main = paste('采样日', levels(Sampling_Day)[1], '垂直距离观测频率'),
     col = 'skyblue', 
     breaks = 20)

# 也可以直接指定具体日期值(比如"2024-05-01")
hist(subset(WPTD2, Date == "2024-05-01")$Distance,
     xlab = '垂直距离',
     ylab = '观测数量',
     main = '2024-05-01 垂直距离观测频率',
     col = 'skyblue', 
     breaks = 20)

用ggplot2绘制单采样日直方图

先筛选目标日期数据,再绘图:

ggplot(subset(WPTD2, Date == "2024-05-01"), aes(x=Distance)) + 
  geom_histogram(binwidth = 5, boundary=0, fill="skyblue") +
  labs(x="垂直距离", y="观测数量", title="2024-05-01 垂直距离频率直方图")

一次性绘制所有采样日的直方图(分面展示)

如果需要同时展示4天的结果,用facet_wrap()实现分面布局:

ggplot(WPTD2, aes(x=Distance)) + 
  geom_histogram(binwidth = 5, boundary=0, fill="skyblue", alpha=0.7) +
  facet_wrap(~Sampling_Day, ncol=2) # 按2列排列4个图
  labs(x="垂直距离", y="观测数量", title="各采样日垂直距离频率直方图") +
  theme_bw() # 可选:切换为简洁主题

关于你之前尝试的说明

你用ave(WPTD2$Date, WPTD2$Transect nr., FUN = seq_along)生成的是每个样带内的观测序号,不是按日期分组的标识,所以无法用来筛选采样日数据,直接基于Date列处理即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:25:09