/ /カスタム色、凡例などでggplotに複数のデータ系列をプロットする適切な方法 - r、ggplot2

カスタム色、凡例などでggplotに複数のデータ系列をプロットする適切な方法 - r、ggplot2

私は段階的にプロットを作成したい異なる長さのいくつかのデータ系列を含む。私の目標は、各データ系列の外観を制御できるようにすることですが、 それらにカスタム名を付ける 適切な伝説を持つこと。私のデータシリーズは長さが異なるので、 私はそれらを単一のデータフレームに入れることはできません。 下のコードでは、私は4行を期待しています:最短は赤、次は青、緑と黒です

    library(ggplot2)
set.seed(12345)
plt <- ggplot()
colors <- c("red", "blue", "green", "black")
for(i in seq(length(colors))) {
x <- seq(1, 2*i)
y <- x * i + rnorm(length(x))
df <- data.frame(x=x, y=y)
plt <- plt +  geom_point(aes(x, y), data=df, color=colors[i]) +
geom_line(aes(x, y), data=df, color=colors[i])
}
print(plt)

これは私が得るものです。 私のプロット

行に名前を付けて凡例を表示するにはどうすればよいですか? 私の目標を達成する良い方法はありますか?

回答:

回答№1は2

これを行う方法は、単一のデータフレームを ロングフォーマット

このような:

library(ggplot2)
set.seed(12345)
colors <- c("red", "blue", "green", "black")
dat <- lapply(seq_along(colors), function(i){
x <- seq(1, 2*i)
data.frame(
series = colors[i],
x = x,
y = x * i + rnorm(length(x))
)}
)
dat <- do.call(rbind, dat)

今プロット

ggplot(dat, aes(x, y, color=series)) + geom_line()

ここに画像の説明を入力


回答№2については2

あなたは、 for-loop それらが等しくない長さであるためにデータを構築した後に毎回プロットする。これが理由です ggplot2 すごい!作成することができます group それぞれのデータセットについて。そしてあなたは同じものを使ってあなたが望むものにラインを名付けることができます group それは伝説のように表示されます(もちろん、あなたが望むのであれば、凡例で直接変更することもできます)。ここにあなたが期待していることがあります:

set.seed(12345)
require(ggplot2)
require(plyr)
# to group your data. change the letters to whatever you want to appear as legend
line_names <- letters[1:4]
# Use plyr to create your x and y for each i and add the group.
dat <- ldply(1:length(colors), function(i) {
x <- seq(1, 2*i)
y <- x * i + rnorm(length(x))
data.frame(x=x, y=y, grp=line_names[i])
})

# just plot here.
ggplot(data = dat, aes(x=x, y=y)) + geom_line(aes(colour=grp)) + geom_point()

ggplot2_multiple_lines