2016-08-21 33 views
2

ggplotでは、以下のコードを使って次のようなプロットができます。しかし、私はこのようにプロットすれば、私は全くx軸を見ることができません。私は、各行の列数を変更するなどの方法があるかどうか疑問に思っています。私はncolのコマンドをfacet_gridに試しましたが、それはできません。R:facet_gridの各行の列数を変更する方法

ggplot(derivative, aes(x = factor(move), fill = factor(move)), colour = black)+ 
geom_bar()+ 
facet_grid(Market~Season)+ 
scale_fill_discrete(name="Relative Market Move", 
        breaks=c("neg.big", "neg.small", "pos.big", "pos.small"), 
        labels=c("Big Negative", "Small Negative", "Big Positive", "Small Positive"))+ 
scale_x_discrete(labels=c("Large Negative", "Small Negative", "large Positive", "Small Positive"))+ 
labs(x = "") +ylab("Count") 

cramped faceted plot

+2

あなたは(私の知る限りは)の数を設定することはできません'facet_grid'を持つ列。 1つのグラフの半分と別の半分のグラフを別々にプロットすることもできますが、行全体を簡単に比較できるようになりません。より広いアスペクト比のグラフを表示し、おそらくx-ラベルを90度回転させるのはどうでしょうか? – eipi10

+0

グリッドは、渡す式の変数のレベル数によって決まります。設定を変更しないと、eipi10で保存したときに保存するときに、アスペクト比を広げるだけです。代替案:** i **あなたの色と同じであるので、x軸ラベルをドロップします。 ** ii ** 'facet_wrap'を使って慎重に計画してください。 ** iii **横のファセットは、とにかく季節なので、それらをx軸にして、色だけを使用して、市場によってのみ小刻みにグループ化された棒グラフを作成します。 – alistaire

答えて

1

あなたは積み重ね棒グラフとし、下向きの「ネガ」のための棒としたほうが良いかもしれません。これにより、水平方向のスペースがより効率的に使用され、時間の傾向をより簡単に表示できます。たとえば:

library(reshape2) 

まず、いくつかの偽のデータを作成します。

プロットの今
set.seed(199) 
dat = data.frame(index=rep(c("S&P 500","Shanghai","Hang Seng"), each=7), 
       year=rep(paste0(rep(2009:2015,each=2),rep(c("Sp","Au"),7)), 3), 
       replicate(3, sample(50:100,14*3))) 
dat$big.neg = 300 - rowSums(dat[,3:5]) 
names(dat)[3:5] = c("big.pos","small.pos","small.neg") 

# Set year order 
dat$year = factor(dat$year, levels=dat$year[1:14]) 

# Melt to long format 
dat = melt(dat, id.var=c("year","index")) 

ggplot() + 
    geom_bar(data=dat[dat$variable %in% c("big.pos","small.pos"),], 
      aes(x=year, y=value, fill=rev(variable)), stat="identity") + 
    geom_bar(data=dat[dat$variable %in% c("big.neg","small.neg"),], 
      aes(x=year, y=-value, fill=variable), stat="identity") + 
    geom_hline(yintercept=0, colour="grey40") + 
    facet_grid(index ~ .) + 
    scale_fill_manual(breaks=c("big.neg","small.neg","small.pos","big.pos"), 
        values=c("red","blue","orange","green")) + 
    scale_y_continuous(limits=c(-200,200), breaks=seq(-200,200,100), 
        labels=c(200,100,0,100,200)) + 
    guides(fill=guide_legend(reverse=TRUE)) + 
    labs(fill="") + theme_bw() + 
    theme(axis.text.x=element_text(angle=-90, vjust=0.5)) 

enter image description here

関連する問題