如何在ggplot2中以对数刻度显示stat_binhex

时间:2014-10-15 03:37:50

标签: r ggplot2 hexagonal-tiles

我有一个二维六边形密度图,有许多点。我希望六边形内的计数以对数刻度显示,但我无法通过ggplot2弄清楚如何做到这一点。

这是一个简单的例子:

x <- runif(1000, 50, 100) 
y <- rnorm(1000, mean = 10, sd = 8)

df <- as.data.frame(cbind(x, y))

ggplot(df, aes(x, y)) + stat_binhex()

2 个答案:

答案 0 :(得分:8)

如果您未在fill中指定,则..count..美学默认为stat_binhex。下面的代码生成与原始代码相同的图。

ggplot(df, aes(x, y)) + stat_binhex(aes(fill=..count..))

enter image description here

如果您想要计数的对数比例,那么解决方案非常简单:

ggplot(df, aes(x, y)) + stat_binhex(aes(fill=log(..count..)))

enter image description here

答案 1 :(得分:2)

另一种方法是将trans =参数传递给scale_fill_*使用的。

ggplot(df, aes(x, y)) + geom_hex() + scale_fill_gradient(trans = "log")
ggplot(df, aes(x, y)) + geom_hex() + scale_fill_viridis_c(trans = "log")

enter image description here