21
heights1=c(5,5,4.5,4,4,4,4.5,2,4,4)

opar <- par(lwd = 0.3)

barplot(heights1,xlim=c(0,3), ylim=c(0,5),  width=0.1, 
main="Langauges(Verbal & Non-verbal)", 
names.arg=c("Spanish", "Speak" , "English","Speak", "Hindi", 
"Speak", "Arabic", "Speak",  "Body Lang", "Speak"), ylab="Skill level ", 
xlab="Language starting with mostly used", col=c("darkblue","red"),
cex.names=0.7,space=c(2,0,2,0,2,0,2,0,2,0))

legend("top",  c("darkblue","red"), c("reading/Writing", "Speaking")  );

青は「読み書き」、赤は「話す」です。凡例を修正するにはどうすればよいですか? (barplot 関数内で凡例を定義したくない)

ここに画像の説明を入力

4

2 に答える 2

29

fillあなたはあなたの色のために引数を使うことができます。デビッド・ロビンソンの答えと同様に、この場合も凡例を右上に配置することをお勧めします。

legend("topright", 
       legend = c("reading/Writing", "Speaking"), 
       fill = c("darkblue", "red"))

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


他の質問のいくつかを見ると、プロットするに、データをより適切な形式にするために時間を費やすこともできます。

次に例を示します。

  1. これがあなたのデータです:

    heights1 = c(5, 5, 4.5, 4, 4, 4, 4.5, 2, 4, 4) # Your data
    
  2. matrixこれが適切なデータですdimnames

    mydata <- matrix(heights1, ncol = 2, byrow = TRUE,
                     dimnames = list(c("Spanish", "English", "Hindi", 
                                       "Arabic", "Body Lang"),
                                     c("Reading/Writing", "Speaking")))
    mydata # Much more meaningful to look at than a simple vector
    #           Reading/Writing Speaking
    # Spanish               5.0        5
    # English               4.5        4
    # Hindi                 4.0        4
    # Arabic                4.5        2
    # Body Lang             4.0        4
    
  3. 色を定義します(オプションですが、グループごとに1対以上のバーを使用する場合に便利です)

    colors <- c("darkblue", "red") # Define the colors you're using
    
  4. データをプロットして、上部に少し余分なスペースを追加し、軸を抑制します。この段階で凡例を含めたくない理由はわかりませんが、次の引数を追加することで簡単に行うことができます。legend.text = TRUE, args.legend = list(x = "topright", bty = "n")

    barplot(t(mydata), beside = TRUE, col = colors, 
            ylim = c(0, 6), axes = FALSE,
            xlab = "Language starting with mostly used",
            main = "Languages (Verbal & Non-verbal)")
    
  5. y軸を再導入し、凡例を追加します

    axis(2, at = 0:5, labels = 0:5)
    legend("topright", colnames(mydata), fill = colors, bty = "n")
    

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

于 2012-12-18T17:18:30.443 に答える
3

legend行を次のように変更します

legend("topright", c("reading/Writing", "Speaking"), col=c("darkblue","red"), lwd=10);

lwd引数は、凡例には、対応する各色の 10 ピクセルの太さの線が必要であることを示しています。凡例がバーの下に表示されないように、あなたの場合"topright"ではなく使用することをお勧めします。"top"

ここに画像の説明を入力

于 2012-12-18T15:32:26.280 に答える