1. ホーム
  2. r

[解決済み] ggplot2 折れ線グラフで「geom_path: 各グループは1つの観測値のみから構成されています。グループの美観を調整する必要がありますか?"

2022-01-28 23:13:34

質問内容

このデータフレーム("df")で。

year pollution
1 1999 346.82000
2 2002 134.30882
3 2005 130.43038
4 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: 各グループは1つの観測値のみから構成されています。必要ですか? グループの美しさを調整しますか?

折れ線グラフにしたいのに、散布図になってしまいます。そこで geom_line()geom_line(aes(group = year)) が、うまくいかなかった。

ある回答で、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")

解決方法は?

を追加するだけです。 group = 1 を ggplot または geom_line aes() に追加します。

折れ線グラフの場合、どの点をつなげばいいのかがわかるように、データ点をグループ化する必要があります。この場合、単純にすべての点をつなげばよいので、group=1 となります。より多くの変数が使われ、複数の線が描かれる場合、線のグループ化は通常、変数ごとに行われます。

参考 Rのためのクックブック、章。Graphs Bar_and_line_graphs_(ggplot2), Line graphs.

これを試してみてください。

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")