12

次のコードを使用して棒グラフをプロットしています。

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"))

出力は次のようになります。

ここに画像の説明を入力してください

しかし、私が欲しいのは、「ヒンディー語R / w」と「話す」が隙間なく組み合わされ、次にスペースが来て、「英語R/w」と「話す」が組み合わされることです。どうすればよいですか?

4

2 に答える 2

13

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

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))

ここに画像の説明を入力

于 2012-12-18T12:16:02.977 に答える
10

データが適切にフォーマットされていれば、生活はずっと楽になります。関数はまたはのbarplot入力を受け取ります。入力が の場合、R は を使用して自動的にラベルを付けることができます。vectormatrixmatrixdimnames

これを試して:

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")) 

ここに画像の説明を入力

2 つのグループ間の間隔が広すぎる場合は、ここでも @Didzis による提案が適切です。ドキュメントの詳細を念頭に置いて、コマンドに追加space = c(0, .2)します。barplot

heightが行列でbesideisTRUEの場合space、2 つの数値で指定できます。最初の数値は同じグループ内のバー間のスペースで、2 番目の数値はグループ間のスペースです。明示的に指定されていない場合、デフォルトでc(0,1)、 height が行列で横にある場合はTRUE0.2そうでない場合は になります。

于 2012-12-18T18:44:14.563 に答える