1

irisggplot2 でプロットするために、次のようにデータフレームを融解するとします。

meltediris <- melt(iris)

Petal.Widthから値を選択して、値をプロットできるようになりました。variable

ggplot(meltediris) + geom_density(aes(x=meltediris[meltediris$variable == 
                                                          "Petal.Width",]$value))

Petal.Widthで値をプロットしたかったSpeciesので、次のようにしました。

ggplot(meltediris) + geom_density(aes(x=meltediris[meltediris$variable ==
                                          "Petal.Width",]$value, colour=Species))

効果があるように見えますが、効果があることに驚いています。データフレームの選択されたサブセットは、meltediris[meltediris$variable == "Petal.Width",]$value溶けたデータフレーム全体と同じインデックスを持っていません (それは単なるサブセットSpeciesです)。代わりに私がする必要があるべきだったようです:

ggplot(meltediris) + geom_density(aes(x=meltediris[meltediris$variable == 
                                  "Petal.Width",]$value, 
                     colour=meltediris[meltediris$variable == "Petal.Width",]$Species))

Species溶けたデータフレームの選択されたサブセットの値を選択します。別の例を挙げると、次のようになります。

ggplot(meltediris) + geom_density(aes(x=meltediris[meltediris[meltediris$variable == "Petal.Width",]$Species == "virginica",]$value, colour=Species))

非バージニカを選択したため、ggplot は 1 つの種のみを知っている必要があるようです。これを行うと、1 つの種のみが正しくプロットされますが、凡例には他の 2 つのSpecies値が表示されます。これを行うことをどのように知っていますか?それを渡すとx=、残りのデータフレーム値を読み取ることができないと確信していました。溶けたデータフレームから ggplot がこれらの変数を選択する方法を誰かが説明できますか? ありがとう。

4

1 に答える 1

1

コメントで言われているように、これを試してみると:

ggplot(meltediris) + geom_density(
                         aes(x=meltediris[meltediris$variable ==
                                              "Petal.Width",]$value, colour=Species))

このエラーが発生します:

Error:  Aesthetics must either be length one, 
        or the same length as the dataProblems:
                    meltediris[meltediris$variable == "Petal.Width", ]$value

エラーが示すように、同じ長さのaesを指定する必要があります。ここでdataは、aesのすべての値を指定するため、引数を指定する必要はありません(aesはベクトルです)

例えば、

 X <-   meltediris[meltediris$variable =="Petal.Width",]$value
 Col <- meltediris[meltediris$variable == "Petal.Width",]$Species
ggplot() + geom_density(aes(x=X,colour=Col))

ただし、この場合は、すべてのdata.framemeltedirisをサブセット化することをお勧めします。

ggplot(meltediris) + geom_density(aes(x=variable,colour=Species),
               subset=.(variable=="Petal.Width"))
于 2013-02-25T06:40:19.423 に答える