gpt4 book ai didi

r - ggplot2:轴上的花括号?

转载 作者:行者123 更新时间:2023-12-03 13:41:44 24 4
gpt4 key购买 nike

answering a recent visualization问题我真的需要大括号来显示轴上的跨度,但我不知道如何在 ggplot2 中做到这一点。这是情节:

example plot

而不是刻度线,我真的希望 y 轴标签“双字母名称的第二个字母”有一个从 1 到 10(红色和蓝色第二个字母的垂直跨度)延伸的大括号。但我不确定如何做到这一点。 x 轴可以从类似的处理中受益。

代码在链接的 CrossValidated 问题中可用(并且对于这个示例来说不必要地复杂,所以我不会展示它)。相反,这是一个最小的例子:

library(ggplot2)
x <- c(runif(10),runif(10)+2)
y <- c(runif(10),runif(10)+2)
qplot(x=x,y=y) +
scale_x_continuous("",breaks=c(.5,2.5),labels=c("Low types","High types") )

minimal example

在这种情况下,从 (0,1) 为低类型和从 (2,3) 为高类型的大括号将是理想的,而不是刻度线。

我宁愿不使用 geom_rect因为:
  • 刻度线将保留
  • 我更喜欢牙套
  • 它将在情节内部而不是外部

  • 我将如何做到这一点?完美的答案应该是:
  • 漂亮、光滑、纤细的花括号
  • 绘制在绘图区之外
  • 通过高级参数指定(理想情况下是传递给 breaks 中的 scale_x_continuous 选项的范围类型对象)
  • 最佳答案

    更新:一定要看this related Stackoverflow Q&A如果您需要使用 ggsave() 保存绘图并使括号保留在保存的图像中。

    OP 要求括号不在情节中。此解决方案使用 axis.ticks.length结合 axis.ticks = element_blank()允许支架位于绘图区域之外。
    这个答案建立在@Pankil 和@user697473 的基础之上:我们将使用 pBrackets R 包——包括图片!

    library(ggplot2)
    library(grid)
    library(pBrackets)
    x <- c(runif(10),runif(10)+2)
    y <- c(runif(10),runif(10)+2)
    the_plot <- qplot(x=x,y=y) +
    scale_x_continuous("",breaks=c(.5,2.5),labels=c("Low types","High types") ) +
    theme(axis.ticks = element_blank(),
    axis.ticks.length = unit(.85, "cm"))


    #Run grid.locator a few times to get coordinates for the outer
    #most points of the bracket, making sure the
    #bottom_y coordinate is just at the bottom of the gray area.
    # to exit grid.locator hit esc; after setting coordinates
    # in grid.bracket comment out grid.locator() line
    the_plot
    grid.locator(unit="native")
    bottom_y <- 284
    grid.brackets(220, bottom_y, 80, bottom_y, lwd=2, col="red")
    grid.brackets(600, bottom_y, 440, bottom_y, lwd=2, col="red")

    enter image description here

    关于@Pankil 的回答的简短说明:
    ## Bracket coordinates depend on the size of the plot
    ## for instance,
    ## Pankil's suggested bracket coordinates do not work
    ## with the following sizing:
    the_plot
    grid.brackets(240, 440, 50, 440, lwd=2, col="red")
    grid.brackets(570, 440, 381, 440, lwd=2, col="red")
    ## 440 seems to be off the graph...

    enter image description here

    还有几个来展示 pBrackets 的功能:
    #note, if you reverse the x1 and x2, the bracket flips:
    the_plot
    grid.brackets( 80, bottom_y, 220, bottom_y, lwd=2, col="red")
    grid.brackets(440, bottom_y, 600, bottom_y, lwd=2, col="red")

    enter image description here
    ## go vertical:
    the_plot
    grid.brackets(235, 200, 235, 300, lwd=2, col="red")
    grid.brackets(445, 125, 445, 25, lwd=2, col="red")

    enter image description here

    关于r - ggplot2:轴上的花括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7001799/

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