3

ポイントのデータフレームの同じ列を異なる行の値に関連付けたいと思います。たとえば、データフレームで、と、と、をiris比較する 3 つの散布図を作成したいと思います。ノーマルやプロットのように見せたいです。たとえば、次のことができます。Petal.Lengthvirginicaversicolorsetosavirginicaversicolorsetosafacet_gridfacet_wrap

ggplot(iris) + geom_point(aes(x=Petal.Length, y=Petal.Length)) + facet_grid(~Species)

これは私が望んでいるものではありません。Petal.Lengthそれぞれの種をそれ自体に対してプロットしているためですが、どの種を他のどの種と比較するかをハンドコードする場合を除いて、プロットをこのように表示したいと考えています。これは でどのように行うことができggplotますか? ありがとう。

4

2 に答える 2

12

あなたの質問は、複数のカテゴリに分類される多くの個人で測定された単一の変数を比較することに関するものです。データセットを使用した例を考えるとiris、散布図はおそらく有用な視覚化ではありません。

ここでは、 で利用できるいくつかの一変量視覚化を提供しggplot2ます。これらのいずれかが役立つことを願っています:

library(ggplot2)

plot_1 = ggplot(iris, aes(x=Petal.Length, colour=Species)) +
         geom_density() +
         labs(title="Density plots")

plot_2 = ggplot(iris, aes(x=Petal.Length, fill=Species)) +
         geom_histogram(colour="grey30", binwidth=0.15) +
         facet_grid(Species ~ .) +
         labs(title="Histograms")

plot_3 = ggplot(iris, aes(y=Petal.Length, x=Species)) +
         geom_point(aes(colour=Species),
                    position=position_jitter(width=0.05, height=0.05)) +
         geom_boxplot(fill=NA, outlier.colour=NA) +
         labs(title="Boxplots")

plot_4 = ggplot(iris, aes(y=Petal.Length, x=Species, fill=Species)) +
         geom_dotplot(binaxis="y", stackdir="center", binwidth=0.15) +
         labs(title="Dot plots")

library(gridExtra)
part_1 = arrangeGrob(plot_1, plot_2, heights=c(0.4, 0.6))
part_2 = arrangeGrob(plot_3, plot_4, nrow=2)
parts_12 = arrangeGrob(part_1, part_2, ncol=2, widths=c(0.6, 0.4))
ggsave(file="plots.png", parts_12, height=6, width=10, units="in")

ここに画像の説明を入力

于 2013-02-20T08:40:15.963 に答える
5

最初にデータをグループ化することをお勧めします。私はこのようなことをします:

# get Petal.Length for each species separately    
df1 <- subset(iris, Species == "virginica", select=c(Petal.Length, Species))
df2 <- subset(iris, Species == "versicolor", select=c(Petal.Length, Species))
df3 <- subset(iris, Species == "setosa", select=c(Petal.Length, Species))

# construct species 1 vs 2, 2  vs 3 and 3 vs 1 data
df <- data.frame(x=c(df1$Petal.Length, df2$Petal.Length, df3$Petal.Length), 
y = c(df2$Petal.Length, df3$Petal.Length, df1$Petal.Length), 
grp = rep(c("virginica.versicolor", "versicolor.setosa", "setosa.virginica"), each=50))
df$grp <- factor(df$grp)

# plot
require(ggplot2)
ggplot(data = df, aes(x = x, y = y)) + geom_point(aes(colour=grp)) + facet_wrap( ~ grp)

これにより、次の結果が得られます。

ここに画像の説明を入力

于 2013-02-19T20:43:44.040 に答える