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

如何在R ggplot中正确显示X轴时间标签

问题分析与解决建议

1. 图形形态异常的原因及修正

你的代码存在两个核心问题导致图形形态异常:

  • 错误选择几何对象:geom_density_ridges2用于展示多组数据的分布脊线,而你的数据是单类别(仅Running)的时间序列数值数据,该几何对象完全不适用。
  • 映射关系错误:你将y映射为activity(字符串类型),但实际需要展示的数值是level,正确的映射应该是x=time,y=level。

修正后的基础绘图代码

library(ggplot2)

# 加载数据(假设数据已存入df2)
df2 <- structure(list(activity = c("Running", "Running", "Running", 
"Running", "Running", "Running", "Running", "Running", "Running", 
"Running"), time = structure(c(-2209064400, -2209064100, -2209063800, 
-2209063500, -2209063200, -2209062900, -2209062600, -2209062300, 
-2209062000, -2209061700), tzone = "UTC", class = c("POSIXct", 
"POSIXt")), level = c(0.0450582956975968, 0.049786810752437, 
0.049786810752437, 0.0409378662803991, 0.0373264654807176, 0.0373264654807176, 
0.0518442650051548, 0.0471157499503146, 0.0527766243609182, 0.0615719801782924
)), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"
))

# 使用折线图绘制时间序列数据
ggplot(df2, aes(x = time, y = level, color = activity)) +
  geom_line(linewidth = 1) +
  geom_point(size = 2) # 可选:添加数据点增强可读性

2. X轴时间标签异常的修正

你的时间数据属于1900年之前的早期时间(POSIXct以1970-01-01为起点,负数代表该时间之前的时刻),ggplot默认的时间刻度可能无法正确解析,需要手动指定刻度格式:

添加时间刻度格式化的代码

library(scales) # 加载scales包用于日期格式化

ggplot(df2, aes(x = time, y = level, color = activity)) +
  geom_line(linewidth = 1) +
  geom_point(size = 2) +
  scale_x_datetime(
    breaks = df2$time, # 使用数据中的所有时间点作为刻度
    labels = date_format("%Y-%m-%d %H:%M", tz = "UTC") # 指定时间格式,保持UTC时区
  ) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # 旋转标签避免重叠

额外说明

如果你的Excel可视化是类似“时间为横轴,level为纵轴,activity为分组”的图形,上述代码完全匹配需求。如果需要其他类型的可视化(如面积填充),可以将geom_line替换为geom_area(alpha = 0.3)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 10:42:22