このデータフレーム( "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))
に置き換えようとしましたが、うまくいきませんでした。
ある答えでは、年を因子変数に変換するように言われました。私はやりましたが、問題は解決しません。これは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のためのクックブック、章:グラフBar_and_line_graphs_(ggplot2)、折れ線グラフ。
これを試して:
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")
変数の1つが実際には因子変数であるため、このエラーが発生します。実行する
str(df)
これを確認してください。それから、 "1,2,3,4"レベル番号に変換する代わりに年の番号を保持するためにこの二重変数の変更をしてください:
df$year <- as.numeric(as.character(df$year))
編集:あなたのdata.frameはpbを引き起こすかもしれないクラス "array"の変数を持っているようです。してみてください:
df <- data.frame(apply(df, 2, unclass))
そしてplto
新しいセッションでRを起動し、これをに貼り付けます。
library(ggplot2)
df <- 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")
df[] <- lapply(df, as.numeric) # make all columns numeric
ggplot(df, aes(year, pollution)) +
geom_point() +
geom_line() +
labs(x = "Year",
y = "Particulate matter emissions (tons)",
title = "Motor vehicle emissions in Baltimore")
データフレームに関しても同様の問題がありました。
group time weight.loss
1 Control wl1 4.500000
2 Diet wl1 5.333333
3 DietEx wl1 6.200000
4 Control wl2 3.333333
5 Diet wl2 3.916667
6 DietEx wl2 6.100000
7 Control wl3 2.083333
8 Diet wl3 2.250000
9 DietEx wl3 2.200000
X軸の変数は数値であるべきだと思うので、geom_lineは点を結んで線を引く方法を知っています。
2列目を数値に変更した後
group time weight.loss
1 Control 1 4.500000
2 Diet 1 5.333333
3 DietEx 1 6.200000
4 Control 2 3.333333
5 Diet 2 3.916667
6 DietEx 2 6.100000
7 Control 3 2.083333
8 Diet 3 2.250000
9 DietEx 3 2.200000
それはうまくいきます。