简体   繁体   English

图例中的颜色被覆盖

[英]Color in legend being overwritten

While different colors are shown in the plot, the legend shows only one color. 图中显示了不同的颜色,而图例仅显示了一种颜色。 My objective is to show the legend as is. 我的目标是按原样显示图例。 Also, I am NOT looking to use shapes between 21 and 25. I want to use a different shape eg Shape = 2. 另外,我希望使用21到25之间的形状。我想使用其他形状,例如Shape = 2。

Here's the source code: 这是源代码:

#catsM dataset is in MASS package that is shipped by CRAN
     testM<-catsM
     testM[1:10,"Sex"] <- "F"
     ggplot(testM,aes(Bwt,Hwt)) +
      geom_point(aes(color=Sex), shape = 2) + 
        geom_smooth(method = "glm", se = FALSE, 
                    aes(linetype = "glm line"), color = "red") + 
        geom_smooth(method = "lm", span = 0.5, 
                    aes(linetype = "lm line"), color = "yellow") + 
        scale_color_manual(values = c("magenta","black"))

Here's the output. 这是输出。 We can see that the color code of the second line lm overrides the red color of glm . 我们可以看到第二行lm的颜色代码覆盖了glm的红色。 Is there any fix for this? 有没有解决办法? I'd appreciate your thoughts. 非常感谢您的想法。 在此处输入图片说明


I am posting dput(): 我正在发布dput():

dput(catsM)
structure(list(Sex = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("F", "M"), class = "factor"), 
    Bwt = c(2, 2, 2.1, 2.2, 2.2, 2.2, 2.2, 2.2, 2.2, 2.2, 2.2, 
    2.3, 2.4, 2.4, 2.4, 2.4, 2.4, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 
    2.5, 2.5, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.7, 2.7, 2.7, 2.7, 
    2.7, 2.7, 2.7, 2.7, 2.7, 2.8, 2.8, 2.8, 2.8, 2.8, 2.8, 2.8, 
    2.9, 2.9, 2.9, 2.9, 2.9, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3.1, 
    3.1, 3.1, 3.1, 3.1, 3.1, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.3, 
    3.3, 3.3, 3.3, 3.3, 3.4, 3.4, 3.4, 3.4, 3.4, 3.5, 3.5, 3.5, 
    3.5, 3.5, 3.6, 3.6, 3.6, 3.6, 3.7, 3.8, 3.8, 3.9, 3.9), Hwt = c(6.5, 
    6.5, 10.1, 7.2, 7.6, 7.9, 8.5, 9.1, 9.6, 9.6, 10.7, 9.6, 
    7.3, 7.9, 7.9, 9.1, 9.3, 7.9, 8.6, 8.8, 8.8, 9.3, 11, 12.7, 
    12.7, 7.7, 8.3, 9.4, 9.4, 10.5, 11.5, 8, 9, 9.6, 9.6, 9.8, 
    10.4, 11.1, 12, 12.5, 9.1, 10, 10.2, 11.4, 12, 13.3, 13.5, 
    9.4, 10.1, 10.6, 11.3, 11.8, 10, 10.4, 10.6, 11.6, 12.2, 
    12.4, 12.7, 13.3, 13.8, 9.9, 11.5, 12.1, 12.5, 13, 14.3, 
    11.6, 11.9, 12.3, 13, 13.5, 13.6, 11.5, 12, 14.1, 14.9, 15.4, 
    11.2, 12.2, 12.4, 12.8, 14.4, 11.7, 12.9, 15.6, 15.7, 17.2, 
    11.8, 13.3, 14.8, 15, 11, 14.8, 16.8, 14.4, 20.5)), .Names = c("Sex", 
"Bwt", "Hwt"), row.names = c("1", "2", "3", "4", "5", "6", "7", 
"8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", 
"19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", 
"30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", 
"41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", 
"52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", 
"63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", 
"74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", 
"85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", 
"96", "97"), class = "data.frame")

I still haven't fully grasped all the quirks of ggplot2's legends, but if you want to force it, the guides options will allow you to manually set it: 我仍然没有完全掌握ggplot2图例的所有怪癖,但是如果您要强制使用它,可以使用guides选项手动设置它:

 testM<-catsM testM[1:10,"Sex"] <- "F" ggplot(testM,aes(Bwt,Hwt)) + geom_point(aes(color=Sex), shape = 2) + geom_smooth(method = "glm", se = FALSE, aes(linetype = "glm line"), color = "red") + geom_smooth(method = "lm", span = 0.5, aes(linetype = "lm line"), color = "yellow") + scale_color_manual(values = c("magenta","black")) + guides(linetype = guide_legend(override.aes = list(color = c("red", "yellow")))) 

For discrete variables mapping aesthetics to shape is another option. 对于离散变量,将美感映射到shape是另一种选择。 Not sure of how good it'll be when it comes to design aesthetics and usa: 不知道在设计美学和美国方面会有多好:

  ggplot(testM,aes(Bwt,Hwt)) +
  geom_point(aes(shape= Sex)) + 
  geom_smooth(method = "glm", se = FALSE, 
              aes(linetype = "glm", color  = 'glm')) + 
  geom_smooth(method = "lm", span = 0.5, 
              aes(linetype = "lm", color ='lm'), size = 4) + 

  scale_linetype_discrete(name = "Method") +   
  scale_color_manual(name = "Method", values = c('red', 'yellow'))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM