R ggplot中自定义发散颜色渐变的标签
我想绘制一些数据,其中我使用了发散色标的自定义变换。如图所示,标签很时髦,有时甚至一点也不时髦。我希望标签是四舍五入的,并显示颜色代表的值,而不是转换 我已经能够成功地将其应用于非负量表,我相信这与负数或R ggplot中自定义发散颜色渐变的标签,r,ggplot2,R,Ggplot2,我想绘制一些数据,其中我使用了发散色标的自定义变换。如图所示,标签很时髦,有时甚至一点也不时髦。我希望标签是四舍五入的,并显示颜色代表的值,而不是转换 我已经能够成功地将其应用于非负量表,我相信这与负数或逆调用trans_new有关,我从文档中不太了解: 以下是我浏览的一些链接: 看起来对我很有帮助 library(scales) library(tidyverse) log_both <- function(x){ifelse(x == 0, 0, log(abs(x)) *
逆
调用trans_new
有关,我从文档中不太了解:
以下是我浏览的一些链接:
看起来对我很有帮助
library(scales)
library(tidyverse)
log_both <- function(x){ifelse(x == 0, 0, log(abs(x)) * sign(x))}
log_both_trans <-
function(){
trans_new(name = 'log_both',
transform = log_both,
inverse = log_both) #not clear what `inverse` does
}
df <-
tibble(y = (-10:10),
x = (y^4)*sign(y))
ggplot(df) +
#no transformation
geom_point(aes(factor(x), y = 1, fill = x), shape = 21, size = 10) +
scale_fill_gradient2(low = "blue", mid = "white", high = "red") +
#transformed
geom_point(aes(factor(x), y = - 1, color = x), size = 10) +
scale_color_gradient2(low = "blue", mid = "white", high = "red", trans = "log_both") +
ylim(-2, 2) +
labs(colour = "transformed", fill = "default", x = "", y = "")
库(比例)
图书馆(tidyverse)
log_tware参数逆
采用的函数是原始变换的数学逆。如果使用对数变换,则逆运算是指数运算。计算与所选打断相对应的标签时,需要使用相反的值。(记录变换以获得缩放数据,然后进行逆变换以获得标签。另请参见)
库(比例)
图书馆(tidyverse)
记录两者
library(scales)
library(tidyverse)
log_both <- function(x){ifelse(x == 0, 0, log(abs(x)) * sign(x))}
exp_both <- function(x){exp(abs(x)) * sign(x)} # this is the inverse of log_both
log_both_trans <-
function(){
trans_new(name = 'log_both',
transform = log_both,
inverse = exp_both)
}
df <-
tibble(y = (-10:10),
x = (y^4)*sign(y))
ggplot(df) +
#no transformation
geom_point(aes(factor(x), y = 1, fill = x), shape = 21, size = 10) +
scale_fill_gradient2(low = "blue", mid = "white", high = "red",
guide = guide_colorbar(order = 1)) +
#transformed
geom_point(aes(factor(x), y = - 1, color = x), size = 10) +
scale_color_gradient2(low = "blue", mid = "white", high = "red",
trans = "log_both",
breaks = c(-10000, -100, 0, 100, 10000), # desired breaks on transformed scale
guide = guide_colorbar(order = 2)) +
ylim(-2, 2) +
labs(colour = "transformed", fill = "default", x = "", y = "")