R ggplot geom_line绘图结果异常 Date列格式转换问题
问题判定
折线图异常确实是Date列格式错误导致的。
你CSV中的Date列存储的是带前后空格、包裹在引号内、带千分位逗号的Excel日期序列号文本,read_csv读入时会直接将其识别为字符类型;直接对带空格、逗号的字符串调用as.Date()无法完成有效转换,最终日期列转换失败,自然无法生成正确的时序折线。
修复步骤
- 先对Date列做文本清洗:去除前后多余空格、删除数字间的千分位逗号
- 将清洗后的文本转为数值型的Excel日期序列号,再按Excel的日期原点规则转成R的Date类型
- 过滤Price列的空值、无效值时注意排除NA值,避免过滤逻辑失效
修正后可直接运行的代码
library(tidyverse) southsea <- read_csv("C:/Users/Kevin/OneDrive/Documents/Open University/Research/south sea bubble/southseatest.csv") southsea <- southsea %>% mutate( Date = str_trim(Date), # 去除Date值前后的多余空格 Date = str_remove_all(Date, ","), # 删除序列号里的千分位逗号 Date = as.numeric(Date), # 转为数值型Excel日期序列号 Date = as.Date(Date, origin= "1899-12-30") # 转换为标准日期格式 ) %>% filter(!is.na(Price), Price > 0) # 过滤空值、无效价格值 ggplot(data= southsea, aes(x=Date,y=Price))+ geom_line()
注:当x轴为正确的日期类型时,不需要额外添加
group = 1参数,ggplot会自动识别连续时序维度,生成正确的连续折线。
内容的提问来源于stack exchange,提问作者Kevin A
相关产品推荐
相关产品推荐

