R 结合geom_bin2d,在ggplot中获得相对计数,并正确使用比例填充梯度

R 结合geom_bin2d,在ggplot中获得相对计数,并正确使用比例填充梯度,r,ggplot2,normalization,bin,R,Ggplot2,Normalization,Bin,我正在使用ggplot2结合geom_bin2d和scale_fill_gradientn绘制由var_X和var_Y组成的df的二维绘图,但我有两个问题需要解决 (i) 我需要得到z的相对计数(也在颜色栏中)从0到1,可能是通过将计数规格化为其最大值 (ii)就绝对计数而言,最大计数为~1600,如色条所示(色条范围为~0到~1600),但绘图仅显示蓝色到绿色(或黄色),而不是红色 这是我的密码 jet.colors <- colorRampPalette(c("#00007F", "b

我正在使用ggplot2结合geom_bin2d和scale_fill_gradientn绘制由var_X和var_Y组成的df的二维绘图,但我有两个问题需要解决

(i) 我需要得到z的相对计数(也在颜色栏中)从0到1,可能是通过将计数规格化为其最大值

(ii)就绝对计数而言,最大计数为~1600,如色条所示(色条范围为~0到~1600),但绘图仅显示蓝色到绿色(或黄色),而不是红色

这是我的密码

jet.colors <- colorRampPalette(c("#00007F", "blue", "#007FFF", "cyan","#7FFF7F", "yellow", "#FF7F00", "red", "#7F0000"))
p<-ggplot(data.frame(df$var_X,df$var_Y), aes(df$var_X,df$var_Y)) + 
geom_bin2d()+ scale_x_continuous(trans=log_trans(), breaks=c(100,150, 200, 250))+
ylim(c(0, 200))+
scale_fill_gradientn(colours = jet.colors(7))
p

## or using ##
scale_fill_gradientn(colours = c("darkblue","lightblue", "green","yellow","red"))
jet.colors(i)不清楚您希望如何规范化。一种方法是使用“geom_bin2d(aes(填充=…密度…)”,如下所示

library(tidyverse)
library(scales)
df <- data.frame(var_X = runif(1000,0,1), var_Y = runif(1000,0,200))

jet.colors <- colorRampPalette(c("#00007F", "blue", "#007FFF", "cyan","#7FFF7F", "yellow", "#FF7F00", "red", "#7F0000"))
p<-ggplot(df, aes(df$var_X,df$var_Y)) + 
  geom_bin2d(aes(fill = ..density..)) +
  scale_x_continuous(trans=log_trans(), breaks=c(100,150, 200, 250)) +
  ylim(c(0, 200)) +
  scale_fill_gradientn(colours = jet.colors(7))
p
库(tidyverse)
图书馆(比例尺)
df(i)不清楚您希望如何正常化。一种方法是使用“geom_bin2d(aes(填充=…密度…)”,如下所示

library(tidyverse)
library(scales)
df <- data.frame(var_X = runif(1000,0,1), var_Y = runif(1000,0,200))

jet.colors <- colorRampPalette(c("#00007F", "blue", "#007FFF", "cyan","#7FFF7F", "yellow", "#FF7F00", "red", "#7F0000"))
p<-ggplot(df, aes(df$var_X,df$var_Y)) + 
  geom_bin2d(aes(fill = ..density..)) +
  scale_x_continuous(trans=log_trans(), breaks=c(100,150, 200, 250)) +
  ylim(c(0, 200)) +
  scale_fill_gradientn(colours = jet.colors(7))
p
库(tidyverse)
图书馆(比例尺)
df(i)这应给出最大bin值1

library(tidyverse)
library(scales)
df <- data.frame(var_X = runif(1000,0,1), var_Y = runif(1000,0,200))

p<-ggplot(df, aes(df$var_X,df$var_Y)) + 
  geom_bin2d(aes(fill = stat(count/max(count)))) +
  scale_x_continuous(trans=log_trans(), breaks=c(100,150, 200, 250)) +
  ylim(c(0, 200)) +
  scale_fill_gradientn(colours = jet.colors(7))
p
库(tidyverse)
图书馆(比例尺)
df(i)这应给出最大bin值1

library(tidyverse)
library(scales)
df <- data.frame(var_X = runif(1000,0,1), var_Y = runif(1000,0,200))

p<-ggplot(df, aes(df$var_X,df$var_Y)) + 
  geom_bin2d(aes(fill = stat(count/max(count)))) +
  scale_x_continuous(trans=log_trans(), breaks=c(100,150, 200, 250)) +
  ylim(c(0, 200)) +
  scale_fill_gradientn(colours = jet.colors(7))
p
库(tidyverse)
图书馆(比例尺)

df我通过添加“限制”功能来调整最小和最大范围,解决了第二个问题。我通过添加“限制”功能来调整最小和最大范围,解决了第二个问题。谢谢,Matt。我最初想要的是将最大bin值设置为1,但您建议使用密度函数就足够了。谢谢,Matt。我最初想要的是将最大bin值设置为1,但您建议使用密度函数就足够了。