4

ggplot2 を使用して 2 セットのデータでヒストグラムをプロットしようとしています。私のデータセットには、プロットする 418 の値があり、2 つのデータ グループがあります (したがって、ヒストグラムには 2 セットの色付きのバーが表示されます)。面倒なことに、データセットの問題を再現できませんiris:

library(ggplot2)
ggplot(iris, aes(x=iris[,1], fill=iris[,5])) + 
geom_histogram(binwidth=.5,alpha=.5)

これにより、ヒストグラム ファインが作成されます。私のデータで試してみると、次のようになります。

Error : cannot allocate vector of size 4.0 Gb
In addition: Warning messages:
1: In anyDuplicated.default(breaks) :
  Reached total allocation of 16366Mb: see help(memory.size)
2: In anyDuplicated.default(breaks) :
  Reached total allocation of 16366Mb: see help(memory.size)
3: In anyDuplicated.default(breaks) :
  Reached total allocation of 16366Mb: see help(memory.size)
4: In anyDuplicated.default(breaks) :
  Reached total allocation of 16366Mb: see help(memory.size)
Error in UseMethod("scale_dimension") : 
  no applicable method for 'scale_dimension' applied to an object of class "NULL"

私は 16GB のメモリを持っているので、418 のデータ ポイントでプロットを作成することは問題になりません。

どんな助けでも大歓迎です。


列名を参照しても、データがプロットされないことがわかりました。これはデータの範囲によるものだと思います。データを対数変換した後、ヒストグラムがプロットされます。ggplot2 または R 全体として、理解できる 1-165476109 の範囲が気に入らないようです...

4

1 に答える 1

5

コードは次のようになります。

ggplot(iris, aes(x=Sepal.Length, fill=Species)) + 
  geom_histogram(binwidth=.5,alpha=.5)

ここに画像の説明を入力してください

その理由は、内部の引数がaes()データの環境で評価されるためです。これは、マッピングがデータ内の列名を指している必要があることを意味しますx=Sepal.Length

あなたがしたように呼び出しを書くとき、あなたは150の異なる変数をにマップaes()するように伝えようとしています、そして同様に150の異なる変数をにマップする-これは明らかにあなたが考えていたものではありません。ggplotxfill

于 2012-06-21T11:21:24.020 に答える