1

を使用してドキュメントに表と図を統合するとknitr、コードを追加することでより再現性が高く興味深いものになります。

多くの場合、 と を組み合わせるとdplyr、 (パイプ演算子ggvisを使用して) 比較的読みやすいコードを持つプロットを作成できます。magrittr%>

mtcars %>%
  group_by(cyl, am) %>%
  summarise( weight = mean(wt) ) %>%
  ggvis(x=~am, y=~weight, fill=~cyl) %>%
  layer_bars()

問題は、ggvis プロット:

ggvis

ggplot2 プロットほどきれいに見えません (私が知っている、因数分解cyl):

ここに画像の説明を入力

ただし、次のものggplot2が必要です。

mtcars %>%
  group_by(am, cyl) %>%
  summarise( weight = mean(wt) ) %>%
  ggplot( aes(x=am, y=weight, fill=cyl) ) +
  geom_bar(stat='identity')

私の問題は、これが配管のためにから%>%に切り替わることです。+これは非常に小さなかゆみであることはわかっていますが、次の方法を使用することをお勧めします。

mtcars %>%
  group_by(am, cyl) %>%
  summarise( weight = mean(wt) ) %>%
  ggplot( aes(x=am, y=weight, fill=cyl) ) %>%
  geom_bar(stat='identity')

これが機能するように の動作を変更する方法はありggplot2ますか?

ps。magrittr'sを使用するという考えは好きではありませんadd()。これもコードが読みにくくなるためです。

4

1 に答える 1

1

コメントを展開するには長すぎるため、あなたの回答に基づいて、私が提供したコードを試してみてうまくいかなかったのか、以前に試してうまくいかなかったのかわかりません

geom_barw<-function(DF,x,y,fill,stat){
   require(ggplot2)
   p<-ggplot(DF,aes_string(x=x,y=y,fill=fill)) + geom_bar(stat=stat)
   return(p)
}
library(magrittr)
library(dplyr)
library(ggplot2)

mtcars %>%
group_by(cyl, am) %>%
summarise( weight = mean(wt) ) %>%
geom_barw(x='am', y='weight', fill='cyl', stat='identity')

これは私にとってはうまくいきます: dplyr_0.4.2 ggplot2_2.1.0 magrittr_1.5

もちろんgeom_barw、引用符を使用する必要がないように変更できます。

編集:よりエレガントで安全な方法があるはずですlazylazyevalパッケージを参照)が、非常に迅速な適応はsubstitute(Axemanが指摘したように-ただし、deparse一部なしで)使用することです:

 geom_barw<-function(DF,x,y,fill,stat){
    require(ggplot2)

    x<-substitute(x)
    y<-substitute(y)
    fill<-substitute(fill)

    p<- ggplot(DF,aes_string(x=x,y=y,fill=fill))
    p<- p + geom_bar(stat=stat)
    return(p)
}
于 2016-04-01T10:40:24.050 に答える