3つのデータセットがある場合:
a1= rnorm(10)
a2= rnorm(10)
a3= rnorm(10)
これらを並べて見るのではなく:
par(mfrow=c(1,3))
plot(a1)
plot(a2)
plot(a3)
同じプロットでこれらすべてのポイントを取得するにはどうすればよいですか?
points
関数を使用するだけです:
plot(a1)
points(a2, col=2)
points(a3, col=3)
これは次と同等です:
plot(1:length(a1), a1)
points(1:length(a2), a2, col=2)
points(1:length(a3), a3, col=3)
ベクトルの長さが等しくない場合、x軸の制限を指定する必要があります。
plot(a1, xlim=c(1, max(length(a1), length(a2), length(a3))))
# To overlay scatterplots in R
# import the required libraries
library(ggplot2)
library(reshape2)
# assign data
a1=rnorm(10)
a2=rnorm(10)
a3=rnorm(10)
# create a dataframe from combined data
# and set count to however many points are in each dataset
df = data.frame(a1, a2, a3, count = c(1:10))
# melt the dataframe
df.m = melt(df, id.vars ="count", measure.vars = c("a1","a2","a3"))
# take a look at what melt() does to get an idea of what is going on
df.m
# plot out the melted dataframe using ggplot
ggplot(df.m, aes(count, value, colour = variable)) + geom_point() + ylim(-3,3)
# swapping the axis
ggplot(df.m, aes(value, count, colour = variable)) + geom_point() + xlim(-3,3)
a1
とa3
のサイズが等しい場合、melt
の入力として、列と同じdata.frame
に入れることはできません。解決策は、単にlist
を使用することです:
a1 = rnorm(10)
a2 = rnorm(25)
a3 = rnorm(17)
a_list = list(a1, a2, a3)
a_df = do.call("rbind", lapply(a_list,
function(x) data.frame(value = x,
count = seq_along(x))))
ID_options = LETTERS[seq_along(a_list)]
a_df$ID = rep(ID_options, sapply(a_list, length))
ggplot(a_df, aes(x = value, y = count, color = ID)) + geom_point()
回答に多様性を追加するには、lattice
を使用することもできます。ここで、コードサンプルの各セットの2行目は、スワップされた軸を表します。
library(lattice)
## If you have already created the "df"
## data.frame from your example
xyplot(count ~ a1 + a2 + a3, data=df)
xyplot(a1 + a2 + a3 ~ count, data=df)
## Without first creating the "df"
## data.frame from your example
xyplot(1:10 ~ a1 + a2 + a3)
xyplot(a1 + a2 + a3 ~ 1:10)
長さが等しくないベクトルで作業している場合は、 この回答は長さが等しくないcbind
ingベクトルについて共有しました から関数をロードし、次に説明した最初のアプローチを使用できます。 Update: https://Gist.github.com/mrdwab/6789277を参照 関数の最新バージョンの場合。
例:
a1 = rnorm(10)
a2 = rnorm(25)
a3 = rnorm(17)
library(lattice)
library(devtools)
## source_Gist is not working properly unless you provide
## the full URL to the "raw" file
source_Gist("https://Gist.github.com/mrdwab/6789277/raw/9bd7d5931389ec475c49c1918d26d9899796a5d0/Cbind.R")
newdf <- Cbind(a1, a2, a3)
xyplot(a1 + a2 + a3 ~ sequence(nrow(newdf)), data=newdf)
xyplot(sequence(nrow(newdf)) ~ a1 + a2 + a3, data=newdf)
デフォルトの色を少し調整したプロットの例を次に示します。
xyplot(sequence(nrow(newdf)) ~ a1 + a2 + a3, data=newdf,
pch = 21, fill = c("black", "red", "green"), cex = 1)