强制绘图相关热图色标在零-R时为白色
我在强制绘图相关热图色标在零-R时为白色,r,colors,plotly,heatmap,correlation,R,Colors,Plotly,Heatmap,Correlation,我在中绘出了相关热图。比例从-1变为1。随着相关性的增强,瓷砖的颜色变深。当相关性变得负向更强时,瓷砖的颜色变为深蓝色。我需要零值被涂成白色。但是,颜色栏仅根据数据集的分布选择零的颜色。我怎么能迫使零值为白色,在颜色条的中间?我试过使用,但无法使其适用于此热图。请帮帮我,我快疯了 library(plotly) library(magrittr) # compute a correlation matrix correlation <- round(cor(mtcars), 3) nms
中绘出了相关热图。比例从-1变为1。随着相关性的增强,瓷砖的颜色变深。当相关性变得负向更强时,瓷砖的颜色变为深蓝色。我需要零值被涂成白色。但是,颜色栏仅根据数据集的分布选择零的颜色。我怎么能迫使零值为白色,在颜色条的中间?我试过使用,但无法使其适用于此热图。请帮帮我,我快疯了
library(plotly)
library(magrittr)
# compute a correlation matrix
correlation <- round(cor(mtcars), 3)
nms <- names(mtcars)
colorlength <- 100
null_value <- (0 - min(correlation)) / (max(correlation) - min(correlation))
border <- as.integer(null_value * colorlength)
colorscale <- as.list(1:colorlength)
#colorscale below zero
s <- scales::seq_gradient_pal("blue", "white", "Lab")(seq(0,1,length.out=border))
for (i in 1:border) {
colorscale[[i]] <- c((i - 1) / colorlength, s[i])
}
#colorscale above zero
s <- scales::seq_gradient_pal("white", "red", "Lab")(seq(0,1,length.out=colorlength - border))
for (i in 1:(colorlength - border)) {
colorscale[[i + border]] <- c((i + border) / colorlength, s[i])
}
plot_ly(x = nms, y = nms, z = correlation,
key = correlation, type = "heatmap", source = "heatplot",color = ~correlation,
colorscale = colorscale,
colorbar = list(len=1)) %>%
layout(xaxis = list(title = ""),
yaxis = list(title = ""))
library(plotly)
图书馆(magrittr)
#计算相关矩阵
相关性使用ggplot
和ggplotly
如何:
library(tidyverse);
gg <- correlation %>%
as.data.frame() %>%
rownames_to_column("x") %>%
gather(y, val, -x) %>%
ggplot(aes(x, y, fill = val)) +
geom_tile() +
scale_fill_gradientn(
colours = c("blue", "white", "red"),
limits = c(-1, 1))
# Create plotly object
library(plotly);
ggplotly(gg);
library(tidyverse);
gg%
as.data.frame()%>%
行名称到列(“x”)%>%
聚集(y,val,-x)%>%
ggplot(aes(x,y,fill=val))+
geom_瓷砖()+
比例填充梯度n(
颜色=c(“蓝色”、“白色”、“红色”),
极限=c(-1,1))
#创建绘图对象
图书馆(策划);
ggplotly(gg);
说明:在ggplot
中,我们可以使用scale\u fill\u gradientn
明确设置限制,确保白色对应于0
的值ggplotly
然后将ggplot
对象转换为plotly
对象。使用ggplotly
非常简单,但我认为您也可以使用plotly
进行转换。你可以试试这个:
col3 <- colorRamp(c("red", "white", "blue"))
plot_ly(x = nms, y = nms, z = correlation,
key = correlation, type = "heatmap", source = "heatplot",color = col3,
colorscale = colorscale,
colorbar = list(len=1, limits = c(-1, 1))) %>%
layout(xaxis = list(title = ""),
yaxis = list(title = ""))
col3%
布局(xaxis=list(title=”“),
yaxis=列表(title=“”))
使用绘图,使用图形对象.Heatmap
对象,因为您知道热图值的限制,所以可以将zmax
,zmid
,zmin
参数设置为1,0,分别为1 < /代码>和色标< /代码>参数为任意色阶,中间为白色,如<代码> RdBu < /代码> .<