ggplot2:显示 x 轴值的附加特定图例

Posted

技术标签:

【中文标题】ggplot2:显示 x 轴值的附加特定图例【英文标题】:ggplot2: additional specific legend to show x-axis values 【发布时间】:2021-11-08 16:56:07 【问题描述】:

我创建了一个函数,其中除其他外,我绘制了以下类型的图。

条数取决于我选择的分位数。为了更容易阅读,我更喜欢将分位数留在 x 轴上。尽管如此,我想添加第二个图例来显示每个分位数的间隔。类似的东西

"1 : (17.5,28.5]" “2:(28.5,31]” ... “不适用:不适用”

我可以很容易地创建标签,我只是不知道如何使用它们来创建图例。

labels <- c()
  for(c in 1:ntiles)
    labels <- cbind(labels, paste(dataset_1$Quantile_rank[c],": ", dataset_1$Quantile[c],sep=" "))
  

谢谢

编辑:

如果我添加一些示例数据和我编写的代码,那可能会更容易。

数据:

分位数 |分位数排名 |事件率 | EventRate_LowCI90 | EventRate_HighCI90

不适用 |不适用 | 0.2857143 | 0.09986631 | 0.5905234

(32.1,39.6] | 1 | 0.5135135 | 0.38248270 | 0.6427128

(39.6,41.2] | 2 | 0.4736842 | 0.34704006 | 0.6038073

代码是

ggplot(dataset_1, aes(x=as.factor(Quantile_rank), y=EventRate)) +
    geom_bar(aes(fill=EventRate), stat="identity") +
    scale_fill_gradient(low = "green", high = "red") +
    geom_text(aes(label=round(EventRate, digits=3)), vjust=1.6, color="darkblue", size=3.5) +
    geom_errorbar(aes(ymin=EventRate_LowCI90, ymax=EventRate_HighCI90), width=.2,
                  position=position_dodge(.9)) +
    labs(title = paste("Event rate for variable",var, sep=" "),
         subtitle = "Plot of event rates per quantile",
         caption = paste("Number of quantiles:", ntiles, sep=" "),
         x="Bin",
         y = "Event Rate") +
    theme(
      plot.title = element_text(color = "black", size = 12, face = "bold"),
      plot.subtitle = element_text(color = "blue"),
      plot.caption = element_text(color = "blue", face = "italic")
    )

我希望将分位数值显示为第二个图例(作为一列,使用上面的标签)。

【问题讨论】:

你不能用scale_x_discrete(labels = paste0(bin_number, "\n", labels)吗? 这不是我想做的。这样做,我将替换 x 轴标签。而不是看到分位数等级,我会看到间隔。我想查看 x 轴上的分位数排名,原因有两个:首先,如果我使用间隔,则无法阅读,因为它们太宽(标签只是混合在一起);其次,使用分位数等级更容易解释。我想将间隔值视为事件率旁边的第二个图例:与分位数一样多的行,显示间隔的值 请根据***.com/questions/5963269/…向我们提供示例数据,以便我们重现您的情节。 刚刚添加。前三行/分位数 【参考方案1】:

您可以计算新列中的分位数并将其用于您的 x 轴,如下所示:

library(tidyverse)

iris %>%
  arrange(Sepal.Length) %>%
  mutate(quantile = row_number() / n()) %>%
  ggplot(aes(quantile, Sepal.Length, fill = Sepal.Length)) +
    geom_bar(stat = "identity") +
    scale_fill_binned()

由reprex package (v2.0.1) 于 2021-09-13 创建

【讨论】:

不确定我明白你的想法。我已经计算了分位数等级,这就是我用来绘制情节的方法。我编辑我的问题以显示数据的外观和代码

以上是关于ggplot2:显示 x 轴值的附加特定图例的主要内容,如果未能解决你的问题,请参考以下文章

如何在ggplot2中添加一个计算高于或低于某个值的点的图例?火山图

使用 ggplot2 获取图例以正确显示

在 ggplot2 中向线型图例添加附加线

R:ggplot2,为啥我的图例显示褪色?

ggplot2 - 在大小图例中显示多个键(形状)

带有所有x轴值的ggplot x轴标签