4

私は知っています、3D 棒グラフは罪です。しかし、私はそれらを行うように求められ、トレードオフとして、バーの上部と右側のバーよりもわずかに暗い色の境界線のみを作成することを提案しました. そのように、バーにはある種の「影」がありますが (うーん)、少なくともそれらを比較することはできます。

これを行う方法はありますか?

ggplot(diamonds, aes(clarity)) + geom_bar() 
4

2 に答える 2

3

すでに述べたように、3D 棒グラフは「悪い」ものです。ggplot2 で直接行うことはできませんが、これに対する可能な回避策があります。

まず、明瞭度のレベルと各レベルに対応するカウントを含む新しいデータ フレームを作成します。

library(plyr)
df2<-ddply(diamonds,.(clarity),nrow) 

次に、ggplot()呼び出しで新しいデータフレームを使用しclarity、x 値として、V1(カウント) y 値として追加geom_blank()します。これにより、必要なレベルで x 軸が作成されます。次にgeom_rect()、バーのシェーディングを生成するために追加します-ここxminxmax値が作成さas.numeric()clarity、定数が追加されます-定数はxminバーの幅の半分未満であり、xmax定数はバーの幅の半分よりも大きくする必要があります。はymin0 で、(カウント) に定数を加えたものです。最後に、この影の上に追加して、実際に棒グラフをプロットします。ymaxV1geom_bar(stat="identity")

ggplot(df2,aes(clarity,V1)) + geom_blank()+
  geom_rect(aes(xmin=as.numeric(clarity)-0.38,
                xmax=as.numeric(clarity)+.5,
                ymin=0,
                ymax=V1+250),fill="green")+
  geom_bar(width=0.8,stat="identity")

ここに画像の説明を入力

于 2013-11-12T12:02:06.487 に答える