9

我有一个带有很多点的二维六边形密度图。我希望六边形内的计数以对数刻度显示,但我无法通过 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()
4

2 回答 2

11

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

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")

在此处输入图像描述

于 2018-04-24T19:15:37.027 回答
10

fill..count..您没有在stat_binhex. 下面的代码产生与原始代码相同的图。

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

在此处输入图像描述

如果您想对计数进行对数刻度,那么解决方案非常简单:

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

在此处输入图像描述

于 2014-10-15T08:03:45.490 回答