在R中绘制列均值变化曲线并设置时间轴刻度间距
列名含年份的均值折线图绘制方案
数据预处理:提取年份并计算均值
先从列名中提取年份信息,计算每列均值,将数据转换为适合绘图的结构:
# 提取列名中的年份(去除前缀"tons_") years <- as.integer(sub("tons_", "", colnames(dataset))) # 计算每列的均值 mean_tons <- colMeans(dataset) # 组合成绘图用的数据框 plot_df <- data.frame( Year = years, Mean_Tons = mean_tons )
绘制符合实际时间间隔的折线图
使用ggplot2可以自动实现按年份实际间隔排列的x轴,因为年份被转换为连续数值变量,轴间距会对应年份差:
# 若未安装ggplot2先执行:install.packages("ggplot2") library(ggplot2) ggplot(plot_df, aes(x = Year, y = Mean_Tons)) + geom_line(color = "#2c3e50", linewidth = 1) + # 设置折线样式 geom_point(size = 3, color = "#e74c3c") + # 添加数据标记点 scale_x_continuous(breaks = plot_df$Year) + # 显示所有存在数据的年份刻度 labs( title = "2017-2050年吨数均值变化", x = "年份", y = "平均吨数" ) + theme_minimal() # 使用简洁主题
补充:基础绘图实现方式
如果偏好基础绘图系统,也可以这样完成:
plot(plot_df$Year, plot_df$Mean_Tons, type = "b", xlab = "年份", ylab = "平均吨数", main = "吨数均值变化折线图", xaxt = "n") axis(1, at = plot_df$Year, labels = plot_df$Year)
核心逻辑说明
将年份转换为整数型连续变量后,x轴会自动根据年份的实际间隔分配刻度距离,比如2020到2022间隔2年,轴上的间距会比2017-2018的1年间隔更大,完全匹配需求。
内容的提问来源于stack exchange,提问作者Stackfan57
相关产品推荐
相关产品推荐

