【问题标题】:How do you make custom legends in ggplot2?你如何在 ggplot2 中制作自定义图例?
【发布时间】:2013-06-21 20:16:59
【问题描述】:

我正在尝试在 ggplot2 中获取一个图例,它将使用以下代码显示我的数据的标签和颜色:

valueVector <- vector()
breakVector <- vector()
foo <- as.data.frame(Seatbelts)
p <- ggplot(foo, aes(x=drivers, y=DriversKilled))  
p <- p + geom_line(aes(y = front, colour = "front"), size = .5)
valueVector <- c(valueVector,"red")
breakVector <- c(breakVector,"front") 
p <- p + geom_line(aes(y = rear, colour = "rear"), size = .5)
valueVector <- c(valueVector,"blue")
breakVector <- c(breakVector,"rear")
p <- p + geom_line(aes(y = kms/100, colour = "kms"), size = .5)
valueVector <- c(valueVector,"green")
breakVector <- c(breakVector,"kms")  
p <- p + geom_line(aes(y = VanKilled, colour = "VanKilled"), size = .5)
valueVector <- c(valueVector,"black")
breakVector <- c(breakVector,"VanKilled")
p <- p + scale_colour_manual("", values = valueVector, breaks = breakVector)

此时 valueVector = c("red", "blue", "green", "black"),

breakVector = c("front", "rear", "kms", "VanKilled"),

然后 p 创建一个图形,其中 front = red,rear = green,kms = blue,VanKilled = black。

如您所见,值的顺序已被打乱,随后颜色不是我尝试设置的颜色。我找不到任何押韵或理由,每次制作新图表时似乎都不同。有谁知道如何解决这个问题?

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    你在这件事上走错路了。 ggplot2 使用一个框架来创建图形,这需要一些熟悉。您应该阅读一些介绍性材料。这是您示例的基本思想,

    d <- data.frame(Seatbelts)
    d$kms <- d$kms/100
    
    require(reshape2) # to transform the data into long format
    m <- melt(d, meas = c("front", "rear", "kms", "VanKilled"))
    
    # now we map the variables to aesthetic parameters
    ggplot(m, aes(drivers, value, colour=variable)) +
      geom_line()
    

    【讨论】:

    • 这很公平,但我仍然不明白为什么我的问题代码中的参数没有按顺序应用。我将尝试重构我的代码以使用 melt() 但如果您对 R 的行为有任何见解,将不胜感激。
    • 我对在aes() 中使用字符串时会发生什么一无所知;它并不是真的要这样使用,所以可能会发生奇怪的事情......
    • 好的,谢谢。我一直在根据以前的堆栈溢出答案这样做,这可能是一个相当复杂的修复。
    猜你喜欢
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多