【问题标题】:add custom numbers to ggplot legend将自定义数字添加到 ggplot 图例
【发布时间】:2013-12-27 22:49:24
【问题描述】:

我正在绘制一个geom_tile 图,其中每个点都有一个特定的p-value

图例以p-value 限制的方式绘制。

我想在这个图例中添加的是具有 p-value 的数据点的数量。

例子:

图例是这样的(每个值都有一个颜色):

0.05
0.04
0.03
0.02
0.01

我想要的是这样的:

0.05 58
0.04 34
0.03 85
0.02 54
0.01 10

如何将其添加到 ggplot2 的图例中?

我尝试使用 geom_text 并将文本位置更改为图例,但没有成功。

更新

pl <- ggplot(df.new) + geom_tile(aes(fill=z, x, y)) + 
      scale_fill_gradient(low="yellow", high="red", name="Legend1") + 
      stat_contour(breaks=c(0.001, 0.01, 0.05), aes(x=x, y=y, z=npvalue, colour=..level..)) +
      scale_colour_gradient2(low="black", mid="black", high="green", labels=paste(levels(c(0.001, 0.01, 0.05))))

我有这个情节,我从z 变量中正确绘制geom_tile,然后我根据p 值绘制stat_contour。我想编辑基于p-valuestat_contour颜色的标签,就像我最初的问题一样,但我遇到了这个错误:

Error in scale_labels.continuous(scale, breaks) : 
  Breaks and labels are different lengths

我的绘图问题出在哪里??

【问题讨论】:

标签: r ggplot2


【解决方案1】:

您可以为fill 颜色指定图例的labels

一个示例数据集:

set.seed(1)
dat <- data.frame(x = rep(1:5), y = rep(1:10), 
                  z = factor(sample(seq(0.01, 0.05, 0.01), 100, TRUE)))

函数table统计dat$z的不同值:

table(dat$z)

# 0.01 0.02 0.03 0.04 0.05 
#   13   25   19   26   17

剧情:

library(ggplot2)
ggplot(dat) +
  geom_tile(aes(x = x, y = y, fill = z)) + 
  scale_fill_discrete(labels = paste(levels(dat$z), table(dat$z)))

在最后一行,创建了图例的labels

【讨论】:

  • 感谢您的评论,这行得通,但我对这个问题进行了简短的更新,这让我的事情变得更加复杂,我遇到了一个错误。请查看更新后的问题。
  • @ifreak 你的 z 变量不是离散的而是连续的吗?
  • z 变量是连续的,它基本上是 p 值,但除了中断之外它还有很多值,但我想要的是只绘制中断内的值的计数
  • @ifreak 您可以使用tmp &lt;- cut(dat$z, seq(0, .5, .1)) 创建剪辑。然后你可以将它用于你的情节:scale_fill_gradient(breaks = seq(0, .5, .1), labels = paste(levels(tmp), table(tmp))).
猜你喜欢
  • 2021-01-05
  • 1970-01-01
  • 1970-01-01
  • 2015-03-28
  • 2021-01-05
  • 1970-01-01
  • 2014-08-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多