スポンサーリンク

【R】ggplot2で単一の折れ線グラフを描くときはaes()の中にgroup=1を記入する!

2020年7月28日

ggplot2で折れ線グラフを描こうとして、

geom_path: Each group consists of only one observation. Do you need to adjust the group aesthetic?

のようなエラーが出て、うまくいかなくて発狂しそうになりました。これは、

library(tidyverse)

BOD_1 <- BOD
BOD_1$Time <- factor(BOD_1$Time)
str(BOD_1)

g <- ggplot(BOD_1, aes(x=Time, y=demand, group = 1)) + 
  geom_line()
g

のようにコードを書くことが解決できます。

なお、いますぐRプログラミングをする方法(googleアカウントがあれば3秒でできます)については以下をご覧ください。

以下に詳細を記載してみました。

スポンサードリンク

ソースコード(Google colaboratory)

https://colab.research.google.com/gist/adash333/0f3f92e0d1676d27a5985c57a0eff1e6/200725_.ipynb

ggplot2リンク

00.初めての医療統計rとezr:06.colaboratoryでrで折れ線グラフ

http://www.cookbook-r.com/Graphs/Plotting_means_and_error_bars_(ggplot2)/

ggplot2のキホン

https://mrunadon.github.io/images/geom_kazutanR.html

ggplot2でgroup=1についてのエラー関連のリンク

https://stackoverflow.com/questions/27082601/ggplot2-line-chart-gives-geom-path-each-group-consist-of-only-one-observation

GoogleColabでR入門のリンク

  https://htsuda.net/stats/colab.html

Rで2系列の折れ線グラフを描くとき

折れ線グラフのエラーバーがse(標準誤差)であれば、stat_summary を用いる方法が簡単。

折れ線グラフのエラーバーがsd(標準偏差)にしたい場合は、

summary_d <- d %>%
  group_by(supp, dose) %>%
  summarize(
    length = mean(len), 
    sd = sd(len)
  )
summary_d

のようにして、

ggplot(
  summary_d, 
  aes(x = dose, y = length, linetype = supp )) +
  geom_line() +
  geom_point() +
  geom_errorbar(aes(ymax = length + sd, ymin = length - sd), width = 0.1) +
  theme_classic()

がお勧めです。

ものによっては

ggplot(summary_d, aes(x = time, y = HbA1c_mean, linetype = sex , group = sex, shape = sex )) +
  geom_line() +
  geom_point() +
  scale_shape_manual(values=c(1,15)) +
  scale_y_continuous(limits = c(0,10)) +
  geom_errorbar(aes(ymax = HbA1c_mean + HbA1c_sd, ymin = HbA1c_mean - HbA1c_sd), width = 0.1) +
  theme_classic()

と記載することもあります。

具体例は以下に記載しました。

スポンサーリンク