R中ggplot绘制折线图报geom_path单组仅1个观测错误的原因及解决方法
报错原因
- 你传入
ggplot的x轴变量month是字符串类型,默认会被识别为离散分类变量,ggplot2默认规则是每个离散分类单独作为一组 geom_line()要求同一个分组内至少有2个观测值才能生成连线,你的每个月份分类下只有1个value值,每个分组都没法生成连线,因此触发该报错- 额外提示:直接用字符串类型的月份做x轴,还会出现月份按字母顺序排序、而非自然时间顺序的问题,也建议同步修复
修复方案
方案1:直接添加group参数(最快解决)
在aes映射中添加group = 1,强制所有观测值归为同一个分组,即可正常生成折线:
month =c("January","February","March","April","May","June", "July", "August" ,"September","October","November","December") value = seq(1:12) d = data.frame(month,value) ggplot(data = d ,aes(x = month,y=value, group = 1)) + geom_line()
方案2:先将月份转为有序因子(同时解决排序问题)
如果要保证x轴月份按自然时间顺序排列,先把month转为指定顺序的有序因子,再添加group参数绘图:
# 先把month转成有序因子,levels按1-12月的顺序设置 d$month <- factor(d$month, levels = c("January","February","March","April","May","June", "July","August","September","October","November","December"), ordered = TRUE) # 绘图时加group=1 ggplot(data = d ,aes(x = month,y=value, group = 1)) + geom_line()
内容的提问来源于stack exchange,提问作者Homer Jay Simpson
相关产品推荐
相关产品推荐

