2017-02-16 11 views
0

私は複数のggplotをリストに格納しています。しかし、彼らは私が使用したい異なるcolorscalesを持っている可能性があります。以下の例は、セクション1と2に示されています。それぞれプロットは完全に単独で生成されます。しかし、2つを組み合わせると、2つ目のカラースケール(1)が最初のカラースケール(3)よりも少ないので、後で最初のカラースケールを印刷するときにエラーが返されます(エラー:手動スケールでは値が不十分です。 1つしか提供されていません)。ggplot(2.1.0)の以前のバージョンが原因であるかどうかは不明です。このような問題を解決するために何か考えてください。同じscale_colour_manualを共有する複数のggplotを停止しますか?

data1<-mtcars; 
data1$cyl<-as.factor(data1$cyl); 
#section 1 # 
plotlist[[1]]<-ggplot(data1[],aes_string(x='hp',y='wt',group=paste('paste0(','gear',',','cyl',')'),fill=('cyl')))+ 
    geom_bar(stat='identity',position="dodge",size=1); 
colourCount <- 3; 
getPalette <- colorRampPalette(c(brewer.pal(11, "Spectral")[c(1:3,8:11)])); 

plotlist[[1]]<-plotlist[[1]]+scale_colour_manual(values = rep(getPalette(min(colourCount,25)),times=floor(colourCount/25)+1))+ 
    scale_fill_manual(values = rep(getPalette(min(colourCount,25)),times=floor(colourCount/25)+1));#adjust color 

#section 2 # 
plotlist[[2]]<-ggplot(data1[data1$cyl==4,],aes_string(x='hp',y='wt',group=paste('paste0(','gear',',','cyl',')'),fill=('cyl')))+ 
    geom_bar(stat='identity',position="dodge",size=1); 

colourCount <- 1; 
getPalette <- colorRampPalette(c(brewer.pal(11, "Spectral")[c(1:3,8:11)])); 
plotlist[[2]]<-plotlist[[2]]+scale_colour_manual(values = rep(getPalette(min(colourCount,25)),times=floor(colourCount/25)+1))+ 
    scale_fill_manual(values = rep(getPalette(min(colourCount,25)),times=floor(colourCount/25)+1)); 
+0

これはJavaScriptではなく、Rです。セミコロン? Srsly? – hrbrmstr

答えて

0

あなたは、両方のグラフのcolourCountに同じ変数を使用しています。あなたが最初のプロットを呼び出すときに、colourCountに1に影響を与えた後、値の数が間違っている(1の代わりに、3)

あなたは

colourCount <- list() 
colourCount[[1]] <- 3; 
... 
colourCount[[2]] <- 1; 

に変更し、各プロットに対応する変数名を使用する場合できます。

+0

返事@timatありがとうございました。この単純なケースでは機能します。しかし、それがループになると(私はまだcolourCount [[ii]を定義しています)、私にとってはうまくいきません。問題の原因は不明です。しかし、回避策は、各ループ内でオブジェクトが作成された後、ggplot_build(plotlist [[ii]])を呼び出すことです。そのようなエラーは消えてしまうようです。しかし、もう一度、ありがとうございました。 – winwindeal

+0

ようこそ。このような場合に動作する場合は、解決済みとマークできますか? (下矢印の下の灰色のチェックをクリックしてください。 – timat

関連する問題