2012-12-18 15 views
6

私は、次のコードを使用して棒グラフをプロットしています:バー間のスペースを制御するにはどうすればよいですか?

heights1=c(5,5,4.5,4) 
barplot(heights1, main="Language ", names.arg=c("Hindi R/W", "Speak" , "English 
R/W","Speak"), ylab=" level ", xlab="Language starting with mostly used", 
cex.names=0.8, col=c("darkblue","red")) 

出力は次のように来た:

enter image description here

しかし私が欲しいのは「ヒンディーR/W」と「話すことですに隙間なしで結合する必要があります。を入力し、スペースを入力して「英語R/W」と「話す」を組み合わせてください。これはどうすればいいですか?

答えて

6

barplot()関数には、引数space=を追加する必要があります。数字は、各バーの前のスペースに対応します。

heights1=c(5,5,4.5,4)  
barplot(heights1, main="Language ", names.arg=c("Hindi R/W", "Speak" , "English 
    R/W","Speak"), ylab=" level ", xlab="Language starting with mostly used", 
    cex.names=0.8, col=c("darkblue","red"),space=c(0.2,0,0.2,0)) 

enter image description here

+0

これは質問に答えますが、OPからのデータが現在、barplot関数のために非常に有用な形式ではないという問題に対処していません。 – A5C1D2H2I1M1N2O1R2T1

6

データが適切にフォーマットされた場合、あなたの人生はずっと容易になるだろう。 barplot関数は、vectorまたはmatrixの入力を受け取ります。入力がmatrixの場合、Rはdimnamesを使用して物事に自動的にラベルを付けることができます。両群間の間隔が多すぎる場合は、@Didzisの提案はここにも適切である

heights1 = c(5, 5, 4.5, 4) 
barplot(t(matrix(heights1, ncol=2, byrow=TRUE, 
       dimnames=list(c("Hindi", "English"), 
           c("Read/Write", "Speak")))), 
     main="Language ", ylab="Level", 
     xlab="Language starting with mostly used", 
     col=c("darkblue", "red"), 
     beside=TRUE, ylim = c(0, 6), 
     legend.text = TRUE, 
     args.legend = list(x = "topright")) 

enter image description here

はこれを試してみてください。 heightが行列であり、besideTRUEある場合space

最初は中棒の間のスペースである場合には、二つの数字で指定することができます。心の中でドキュメントから詳細を保ち、あなたのbarplotコマンドにspace = c(0, .2)を追加同じグループ、2つ目はグループ間のスペースです。明示的に指定されていない場合は、高さが行列の場合はc(0,1)、既定値はTRUE、それ以外の場合は0.2になります。

関連する問題