如何更改 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)
如何更改 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)