如何更改 hexbin 图比例?

How do I change hexbin plot scales?

如何更改 hexbin 图比例?

我目前有这个:

我希望比例从 1 跳到 718,而不是从 1 跳到 2、3、5、10、20、40、80、160、320、640、1280、2560、5120, 10240, 15935.

这是我用来绘制它的代码:

hex <- hexbin(trial$pickup_longitude, trial$pickup_latitude, xbins=600)
plot(hex, colramp = colorRampPalette(LinOCS(12)))

您无法随心所欲地控制比例尺的边界,但您可以对其进行一些调整。首先我们需要一个可重现的例子:

set.seed(42)
X <- rnorm(10000, 10, 3)
Y <- rnorm(10000, 10, 3)
XY.hex <- hexbin(X, Y)

要更改比例,我们需要指定一个用于计数的函数和一个反函数来反转转换。现在,三种不同的缩放比例:

plot(XY.hex)    # Linear, default
plot(XY.hex, trans=sqrt, inv=function(x) x^2)  # Square root
plot(XY.hex, trans=log, inv=function(x) exp(x)) # Log

上图是原始缩放比例。左下角是平方根变换,右下角是对数变​​换。可能有太多级别无法清楚地阅读这些图。将参数 colorcut=6 添加到绘图命令会将级别数减少到 5.

这是一个 ggplot 方法,您可以在其中指定所需的任何中断。

library(ggplot2)
library(RColorBrewer)
##
#   made up sample
#
set.seed(42)
X    <- rgamma(10000, shape=1000, scale=1)
Y    <- rgamma(10000, shape=10,   scale=100)
dt   <- data.table(X, Y)
##
#   define breaks and labels for the legend
#
brks <- c(0, 1, 2, 5, 10, 20, 50, 100, Inf)
n.br <- length(brks)
labs <- c(paste('<', brks[2:(n.br-1)]), paste('>', brks[n.br-1]))
##
#
ggplot(dt, aes(X, Y))+geom_hex(aes(fill=cut(..count.., breaks=brks)), color='grey80')+
  scale_fill_manual(name='Count', values = rev(brewer.pal(8, 'Spectral')), labels=labs)