1

ggplot色/透明度で擬似を作成しようとしていますboxplotが、少し苦労しています。x 軸上の任意の点について、特定の y 値が発生する回数が多いほど、その (x,y) 点が暗くなるという考え方です。さらに複雑なことに、各 (x,y) のカウントはありませんが、代わりにカウントがあります。(x , ymin:ymax)これは、このカウントが (x,ymin) と (x,ymax) の間のすべてのポイントに適用されることを意味します。

検索は少し難しいようで、使用できるものを見つけることができません。自分で取得できる最も近いものは次のとおりですが、大規模なデータセットの場合、これには非常に時間がかかります.

library(ggplot2)
set.seed(1)
(d <- data.frame(cbind(x = sample(1:3, 10, replace = TRUE), y = sample(3:8, 10, replace = TRUE)), fac = sample(1:3, 10, replace = TRUE)))

p1 <- ggplot()

for ( i in seq(nrow(d)))
{
  p1 <- p1 + geom_rect(
    data=d[i,],
    aes(
      xmin = fac - .4,
      xmax = fac + .4,
      ymin = x,
      ymax = y),
    alpha = .25
  )

}

ここに画像の説明を入力

助言がありますか?私はggplot解決策を好むでしょう。ありがとう

13 年 11 月 23 日の更新、トロイの助けを借りてここにたどり着きました。現在の唯一の問題は、凡例が各四角形の t 値の間の範囲であるのに対し、x、y での累積 t の範囲である必要があることです。

library(ggplot2)
set.seed(1)
d <- data.frame(cbind(x = sample(1:3, 6, replace = TRUE), 
                      ymin = sample(3:8, 6, replace = TRUE),
                      ymax = sample(3:8, 6, replace = TRUE),
                      t = sample(3:8, 6, replace = TRUE)/10
                      ))

ggplot(data=d) +
  geom_rect(aes(xmin=x-0.4,xmax=x+0.4,ymin=ymin,ymax=ymax,alpha=t),fill="red")
4

1 に答える 1

2

ggplot は geom_rect を使用してベクトルをサポートします

元のプロットの仕組みに満足している場合、これで少なくともループは解消されますか?

library(ggplot2)
set.seed(1)
(d <- data.frame(cbind(x = sample(1:3, 10, replace = TRUE), y = sample(3:8, 10, replace = TRUE)), fac = sample(1:3, 10, replace = TRUE)))
ggplot(data=d) +
geom_rect(aes(xmin=fac-0.4,xmax=fac+0.4,ymin=x,ymax=y),alpha=0.25,fill="red")

プロット

または、count() の別の実装を使用して透明度の計算方法を変更したかったですか?

編集 - 「カウント」表示でグリッドをブロックするだけの場合:

library(ggplot2)
set.seed(1)
d <- data.frame(cbind(x = sample(1:3, 15, replace = TRUE), 
     y = sample(3:8, 18, replace = TRUE)))

ggplot(data=d) +
   geom_tile(aes(x=x,y=y),alpha=0.25,fill="red")

プロットタイル

于 2013-11-22T08:13:44.923 に答える