1

facet_gridinを使用しggplot2て、同じ軸上に連続スケールと離散スケールを持つ 2 つのグラフを作成したいと考えています。基本的に、私のベクトルfacには数値部分と因子部分があります。

toy=data.frame(type=xc("f f f f i i i i"),fac=c(letters[1:4],1:3,40))
ggplot(toy,aes(x=ifelse(type=="f",fac,as.numeric((fac)))))+
   geom_bar()+facet_grid(.~type,scales="free")

ggplotしかし、両方のスケールが離散的であることを強制する ため、機能しません。ここに画像の説明を入力

右側のプロットの 1、2、3、40 の等間隔からわかるように。

4

1 に答える 1

3

1 つの列に 2 種類のデータを格納することは、データを表す最善の方法ではありません。

列のサンプル データを変更facして、表現を改善しました。

toy=data.frame(type=c("f", "f","f", "f", "i", "i", "i", "i"),fac=c(letters[1:4],1,5,7,40))

数値に等しくないスペースを取得するにはgeom_bar()、それぞれ別の型に対して ( を使用して) 2 つの呼び出しを行うことができますsubset=。文字の場合はデータをそのまま使用しますが、数値データの場合はfac値を文字に変換してから数値に変換します。facet_grid()2 つのプロットがあることを確認します。scale_x_discrete()両方のファセットで機能します-必要なbreaks=値を指定するだけです。

library(ggplot2)
library(plyr)    
ggplot(data=toy)+
  geom_bar(subset=.(type=="f"),aes(x=fac),width=0.2)+
  geom_bar(subset=.(type=="i"),aes(x=as.numeric(as.character(fac))))+
  facet_grid(.~type,scales="free") + 
  scale_x_discrete(breaks=c("a","b","c","d",1,5,7,40))

ここに画像の説明を入力

于 2013-02-11T16:31:48.350 に答える