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. 定义您的颜色(可选,但如果您在每组中使用的不仅仅是一对条,则很有用)

    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 回答