我正在将ggplot2与geom_bin2d和scale_fill_gradientn结合使用由var_X和var_Y组成的df绘制2d图,但是我有两个问题需要解决。
(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"))
我想发布我的样本数据,但是不知道该怎么做。请让我知道是否需要。
任何建议都会受到欢迎。
答案 0 :(得分:0)
(i)尚不清楚您希望如何规范化。一种方法是使用“ geom_bin2d(aes(fill = ..density ..)))”,如下所示。
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
如果要归一化以使最大bin值为1,则类似这样的事情将需要工作'geom_bin2d(aes(fill = ..ndensity ..)))'。在ggplot2 v3.0.0中似乎无法实现,但在此处进行了讨论:https://github.com/tidyverse/ggplot2/issues/2679
答案 1 :(得分:0)
(i)这应该使bin的最大值为1。
Sensor System