ggplot日期轴绘制垂直箭头报错:date_trans仅支持Date类对象
问题解决:ggplot绘制日期轴箭头时的类型不匹配错误
错误原因
你在geom_segment中直接写2017-11-22会被R解析为数学运算(2017-11-22=1984),得到的是数值类型,而x轴是Date类,两者类型不兼容,因此触发date_trans works with objects of class Date only错误。
修正方案
把目标日期转换为Date类型,并且将固定坐标参数移出aes()(aes()用于映射数据框的列,固定值直接作为geom参数传递更合理):
precip2 %>% ggplot(aes(x = Date, y = sum_precip)) + geom_bar(stat = "identity", fill = "blue") + theme( panel.background = element_rect(fill = "white"), axis.line = element_line(colour = "black") ) + geom_segment( x = as.Date("2017-11-22"), y = 60, xend = as.Date("2017-11-22"), yend = 30, arrow = arrow(type = "closed") # 可选:添加闭合箭头样式,默认仅显示线段 )
关键注意点
- 必须用
as.Date()包裹日期字符串,确保生成的是Date类对象,和x轴的类型完全匹配。 - 可以用
class(precip2$Date)再次确认你的Date列确实是Date类,排除隐性类型问题。
内容的提问来源于stack exchange,提问作者Charlie Morten
相关产品推荐
相关产品推荐

