为了账号安全,请及时绑定邮箱和手机立即绑定

ggplot2折线图给出“geom_path:每组只包含一个观察。你需要调整群体审美吗?“

ggplot2折线图给出“geom_path:每组只包含一个观察。你需要调整群体审美吗?“

阿晨1998 2019-09-20 15:09:38
使用此数据框(“df”):year pollution1 1999 346.820002 2002 134.308823 2005 130.430384 2008  88.27546我尝试创建这样的折线图:  plot5 <- ggplot(df, aes(year, pollution)) +           geom_point() +           geom_line() +           labs(x = "Year", y = "Particulate matter emissions (tons)", title = "Motor vehicle emissions in Baltimore")我得到的错误是:geom_path:每组只包含一个观察。你需要调整群体美感吗?即使我想要折线图,图表也会显示为散点图。我试图取代geom_line()有geom_line(aes(group = year)),但没有奏效。在答案中,我被告知要将年份转换为因子变量。我做了,问题仍然存在。这是输出str(df)和dput(df):'data.frame':   4 obs. of  2 variables: $ year     : num  1 2 3 4 $ pollution: num [1:4(1d)] 346.8 134.3 130.4 88.3  ..- attr(*, "dimnames")=List of 1  .. ..$ : chr  "1999" "2002" "2005" "2008"structure(list(year = c(1, 2, 3, 4), pollution = structure(c(346.82, 134.308821199349, 130.430379885892, 88.275457392443), .Dim = 4L, .Dimnames = list(    c("1999", "2002", "2005", "2008")))), .Names = c("year", "pollution"), row.names = c(NA, -4L), class = "data.frame")
查看完整描述

3 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

您只需要添加group = 1到ggplot或geom_line aes()中。


对于折线图,必须对数据点进行分组,以便知道要连接的点。在这种情况下,它很简单 - 所有点都应该连接,所以group = 1。当使用更多变量并绘制多行时,行的分组通常由变量完成。


尝试这个:


plot5 <- ggplot(df, aes(year, pollution, group = 1)) +

         geom_point() +

         geom_line() +

         labs(x = "Year", y = "Particulate matter emissions (tons)", 

              title = "Motor vehicle emissions in Baltimore")


查看完整回答
反对 回复 2019-09-20
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

您得到此错误,因为您的一个变量实际上是一个因子变量。执行


str(df) 

检查这个。然后执行此双变量更改以保留年份数而不是转换为“1,2,3,4”级别数:


df$year <- as.numeric(as.character(df$year))

编辑:看来你的data.frame有一个类“array”的变量,它可能会导致pb。然后尝试:


df <- data.frame(apply(df, 2, unclass))

并再次策划?


查看完整回答
反对 回复 2019-09-20
  • 3 回答
  • 0 关注
  • 1048 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信