gpt4 book ai didi

r - 多个图例/指南的订购(什么是自动逻辑以及如何更改它?)

转载 作者:行者123 更新时间:2023-12-03 12:53:50 36 4
gpt4 key购买 nike

我偶然发现了ggplot2s图例排序的奇怪行为,只是无法弄清楚图例自动放置背后的逻辑是:

我的目标是:在具有多个比例尺的地块中,我想以与自动比例尺不同的(主题)顺序排列它们。但是我在opts()或guides()中找不到命令来为我执行此操作。需要明确说明的是:我不想更改图例中的项目,效果很好,但是可以安排多个完整的图例。

因此,首先我假设它们是按类型(即比例,颜色等)排序的,但事实并非如此,它们的位置会发生变化(请参见下文)。

按字母顺序排列?

    library(ggplot2) ## v0.9

## Scale_colour on top
qplot(data = mpg,x = displ, y = cty, size = hwy, colour = class) +
scale_size(name = "A") + scale_colour_discrete(name = "B")

## Reverse names --> scale_colour on bottom
qplot(data = mpg,x = displ, y = cty, size = hwy, colour = class) +
scale_size(name = "B") + scale_colour_discrete(name = "A")

## Change name B to C --> scale_colour on bottom
qplot(data = mpg,x = displ, y = cty, size = hwy, colour = class) +
scale_size(name = "C") + scale_colour_discrete(name = "A")

## Change name B to D --> scale_colour on top
qplot(data = mpg,x = displ, y = cty, size = hwy, colour = class) +
scale_size(name = "D") + scale_colour_discrete(name = "A")

scale_colour的其他位置(用于交换的scale_size名称)
  • “E”:底部
  • “F”-“L”:顶部
  • “M”-“N”:底部

  • 并继续显示在顶部的底部。

    阶乘顺序?
        ## From top to bottom: C - B - A
    fname <- factor(c("A","B","C"), levels = c("A","B","C"))
    qplot(data = mpg,x = displ, y = cty, size = hwy, colour = class, alpha = cyl) +
    scale_size(name = fname[1]) + scale_colour_discrete(name = fname[2]) + scale_alpha(name=fname[3])

    ## From top to bottom: B - C - A
    fname <- factor(c("A","B","C"), levels = c("C","B","A"))
    qplot(data = mpg,x = displ, y = cty, size = hwy, colour = class, alpha = cyl) +
    scale_size(name = fname[1]) + scale_colour_discrete(name = fname[2]) + scale_alpha(name=fname[3])

    ## From top to bottom: B - C - A
    fname <- factor(c("A","B","C"), levels = c("B","C","A"))
    qplot(data = mpg,x = displ, y = cty, size = hwy, colour = class, alpha = cyl)+
    scale_size(name = fname[1]) + scale_colour_discrete(name = fname[2]) + scale_alpha(name=fname[3])

    标题长度?
    我现在将停止使用示例代码,但是该示例还会产生与字符长度无关的波动顺序。

    有任何想法吗?

    最佳答案

    正如我在上面的评论中提到的那样,无法控制和预测图例框的位置。
    我不知道这个问题。感谢您澄清这一点。

    也许有些人需要控制图例框,在这里我快速解决:

    # run this code before calling ggplot2 function
    guides_merge <- function(gdefs) {
    gdefs <- lapply(gdefs, function(g) { g$hash <- paste(g$order, g$hash, sep = "z"); g})
    tapply(gdefs, sapply(gdefs, function(g)g$hash), function(gs)Reduce(guide_merge, gs))
    }
    environment(guides_merge) <- environment(ggplot)
    assignInNamespace("guides_merge", guides_merge, pos = "package:ggplot2")

    然后您可以将 order参数用于 guide_legend(以及 guide_colorbar),
    # specify the order of the legend.
    qplot(data = mpg,x = displ, y = cty, size = hwy, colour = class, alpha = cyl)+
    guides(size = guide_legend(order = 1), colour = guide_legend(order = 2), alpha = guide_legend(order = 3))

    qplot(data = mpg,x = displ, y = cty, size = hwy, colour = class, alpha = cyl)+
    guides(size = guide_legend(order = 3), colour = guide_legend(order = 1), alpha = guide_legend(order = 2))
    order参数应为正整数。图例按顺序排列。
    请注意,这是一个快速修复,因此在下一个正式版本的ggplot2中可能会更改界面。

    关于r - 多个图例/指南的订购(什么是自动逻辑以及如何更改它?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10035551/

    36 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com