以下是分箱密度图的示例:
library(ggplot2)
n <- 1e5
df <- data.frame(x = rexp(n), y = rexp(n))
p <- ggplot(df, aes(x = x, y = y)) + stat_binhex()
print(p)
调整色阶以便中断是对数间隔的会很好,但是尝试一下
my_breaks <- round_any(exp(seq(log(10), log(5000), length = 5)), 10)
p + scale_fill_hue(breaks = as.factor(my_breaks), labels = as.character(my_breaks))
结果是Error: Continuous variable () supplied to discrete scale_hue.
看起来breaks期待一个因素(也许?)并且在设计时考虑到分类变量?
我将发布一个非内置的解决方法作为答案,但我想我可能会迷失在我的使用中scale_fill_hue
,我想知道我是否遗漏了任何明显的东西。
是的!有一个trans
论证scale_fill_gradient
,这是我之前错过的。这样我们就可以得到一个具有适当图例和色标以及简洁语法的解决方案。使用p
从问题和my_breaks = c(2, 10, 50, 250, 1250, 6000)
:
p + scale_fill_gradient(name = "count", trans = "log",
breaks = my_breaks, labels = my_breaks)
我的另一个答案最适合用于更复杂的数据功能。哈德利的评论鼓励我在底部的示例中找到这个答案?scale_gradient
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)