geom_hex
中的ggplot2
几何根据六角形箱中落入的点数来为其着色。这对于均匀分布的数据非常有效,但是如果某些区域的密度比其他区域高得多,则效果不是很好-单个非常密集的六边形可能会淹没差异。
如何使密度色标使用对数标尺或其他某种归一化转换?
答案 0 :(得分:6)
ggplot 的较新版本通过新的stat()
内部函数揭秘了夏季指标的计算。这样可以更轻松地修改用于创建十六进制填充的统计信息。例如:
df <- data.frame(
x = rnorm(1000),
y = rnorm(1000)
)
plot.df <- ggplot(data = df, aes(x = x, y = y)) +
geom_hex(aes(fill = stat(count)))
print(plot.df)
plot.df.log <- ggplot(data = df, aes(x = x, y = y)) +
geom_hex(aes(fill = stat(log(count))))
print(plot.df.log)
可以代替log
进行所需的任意转换,例如立方根等。
cut
为避免创建带有混淆值的标度,可以使用cut
建立合理的类别边界,并将其转换为标有原始计数值的数字标度:
plot.df.log.cut <- ggplot(data = df, aes(x = x, y = y)) +
geom_hex(aes(fill = stat(cut(log(count), breaks = log(c(0, 1, 2, 4, Inf)), labels = F, right = T, include.lowest = T)))) +
scale_fill_continuous(name = 'count', labels = c('1', '2', '4', '8+'))
print(plot.df.log.cut)