如何更改 R 中的 heatmap.2 颜色范围?

     2023-02-18     25

关键词:

【中文标题】如何更改 R 中的 heatmap.2 颜色范围?【英文标题】:How to change heatmap.2 color range in R? 【发布时间】:2013-07-23 02:38:57 【问题描述】:

我正在使用 gplot 生成一个热图,显示治疗组与配对对照组的 log2 倍变化。使用以下代码:

 heatmap.2(as.matrix(SeqCountTable), col=redgreen(75), 
           density.info="none", trace="none", dendrogram=c("row"), 
            symm=F,symkey=T,symbreaks=T, scale="none") 

我输出了一个带有真实倍数变化值(即非 Row-Z 分数)的热图,这是我所追求的,采用每个生物学家最喜欢的红-黑-绿配色方案!

log2 倍变化的实际范围是 -3/+7,有很多值在 -2/-1 和 +1/+2 范围内,分别显示为深红色/绿色。这使得整个热图非常暗,难以解释。

有没有一种方法可以使颜色渐变倾斜以使其线性度降低?也就是说,从黑色到非常亮的渐变出现在更小的范围内? 和/或将颜色范围更改为非对称,即从 -3/+7 开始,就像数据一样,而不是像目前的比例那样 -7/+7,黑色仍然以零为中心?

【问题讨论】:

请不要在应该向其他人展示的任何内容中使用红绿方案。 8% 的男性和 0.5% 的女性患有色觉障碍,并且难以阅读您的热图。 designshack.net/articles/accessibility/… 【参考方案1】:

我只是通过将 symkey 参数更改为 FALSE 来使颜色范围不对称

symm=F,symkey=F,symbreaks=T, scale="none"

解决了 colorRampPalette 的颜色问题,使用中断参数指定每种颜色的范围,例如

colors = c(seq(-3,-2,length=100),seq(-2,0.5,length=100),seq(0.5,6,length=100))

my_palette <- colorRampPalette(c("red", "black", "green"))(n = 299)

一共

heatmap.2(as.matrix(SeqCountTable), col=my_palette, 
    breaks=colors, density.info="none", trace="none", 
        dendrogram=c("row"), symm=F,symkey=F,symbreaks=T, scale="none")

【讨论】:

令我困惑的是,在您更改不同颜色的不等分之后,很难解释热图结果,对吧?因为,它们不是同样连续的? 另外一个问题是,如果你这样设置颜色,key好像总是不正常(热图图右上角没有显示)。你以前发现过这样的问题吗?【参考方案2】:

您可以尝试使用 RColorBrewer 包创建自己的调色板

my_palette <- colorRampPalette(c("green", "black", "red"))(n = 1000)

看看这是什么样子。但我认为在你的情况下,如果你真的想把黑色保持在“中间”,只有缩放会有帮助。您可以简单地使用my_palette 而不是redgreen()

我建议您查看RColorBrewer package,他们有相当不错的内置调色板,并查看交互式website for colorbrewer。

【讨论】:

当时它对我有用,你当然必须使用这个调色板作为函数参数 (col=my_palette)【参考方案3】:

我认为你需要设置symbreaks = FALSE 这应该允许不对称的色阶。

【讨论】:

【参考方案4】:

对于那些不使用heatmap.2 的人来说,这是另一个选择(aheatmap 很好!)

从输入矩阵的最小值到最大值创建一个包含 100 个值的序列向量,在其中找到最接近 0 的值,在所需中点之间创建两个颜色向量,组合并使用它们:

breaks <- seq(from=min(range(inputMatrix)), to=max(range(inputMatrix)), length.out=100)
midpoint <- which.min(abs(breaks - 0))
rampCol1 <- colorRampPalette(c("forestgreen", "darkgreen", "black"))(midpoint)
rampCol2 <- colorRampPalette(c("black", "darkred", "red"))(100-(midpoint+1))
rampCols <- c(rampCol1,rampCol2)

【讨论】:

r数据可视化5:热图heatmap

...相关性。1)需要什么格式的数据有很多的软件都可以做heatmap。我们要介绍的当然是R,R默认中提供了heatmap函数。当然,R中也有很多具有heatmap功能的包,比如ggplot2,gplots。今天我们介绍含有heatmap.2功能的gplots包。heatmap.2函数和我... 查看详情

新手:r语言的heatmap的制作问题

R的heatmap里如何添加主标题,横轴标题,纵轴标题?如何修改纵坐标1,2,3.。。。为基因名称?如何修改colorkey的数值范围可在高级绘图函数里添加相关参数:标题main、副标题sub、坐标轴标签xlab、ylab,并非所有绘图函数都支持这... 查看详情

如何使用 R 中的 timevis 更改时间轴中每个组的背景颜色

】如何使用R中的timevis更改时间轴中每个组的背景颜色【英文标题】:HowtochangethebackgroundcolorforeachgroupintimelineusingtimevisinR【发布时间】:2021-11-0615:57:45【问题描述】:我正在尝试根据划分的组对基于timevis的时间轴的背景进行颜色... 查看详情

如何更改 VS 2010 中的轮廓悬停颜色?

】如何更改VS2010中的轮廓悬停颜色?【英文标题】:HowtochangetheoutlininghovercolorinVS2010?【发布时间】:2011-02-1118:53:16【问题描述】:如果我将鼠标悬停在左侧的细竖条上,它会突出显示右侧块的整个范围。当这个范围很大时,我的... 查看详情

如何在 R 中的 ggplot2 中更改 geom_text 中的字体颜色?

】如何在R中的ggplot2中更改geom_text中的字体颜色?【英文标题】:Howtochangefontcoloringeom_textinggplot2inR?【发布时间】:2017-05-2308:11:59【问题描述】:我正在使用geom_bar在ggplot2中生成一些基本的条形图。我希望在每个条形上方以相同... 查看详情

如何更改uipicker中的文本颜色?

】如何更改uipicker中的文本颜色?【英文标题】:Howtochangetextcolorinsideuipicker?【发布时间】:2012-06-2911:01:39【问题描述】:如何使用各种颜色更改选择器内的文本颜色。例如:【问题讨论】:【参考方案1】:使用pickerView:viewForRow... 查看详情

如何使用R中的绘图功能更改散点图中x轴和y轴标签的字体大小和颜色?

】如何使用R中的绘图功能更改散点图中x轴和y轴标签的字体大小和颜色?【英文标题】:Howtochangethefontsizeandcolorofx-axisandy-axislabelinascatterplotwithplotfunctioninR?【发布时间】:2012-09-1208:13:28【问题描述】:我使用以下代码绘制了散点... 查看详情

Python:如果超出特定范围,是不是可以更改绘图中的线条颜色?

】Python:如果超出特定范围,是不是可以更改绘图中的线条颜色?【英文标题】:Python:Isitpossibletochangelinecolorinaplotifexceedsaspecificrange?Python:如果超出特定范围,是否可以更改绘图中的线条颜色?【发布时间】:2015-07-1905:57:30【... 查看详情

如何更改导航栏中的后退按钮颜色?

】如何更改导航栏中的后退按钮颜色?【英文标题】:Howtochangebackbuttoncolorinnavbar?【发布时间】:2016-04-2304:49:19【问题描述】:有没有办法在带有导航控制器的应用中仅更改左侧后退按钮的颜色?有很多改变导航栏颜色的例子,... 查看详情

在 heatmap.2 函数中更改标题字体大小?

】在heatmap.2函数中更改标题字体大小?【英文标题】:Changetitlefontsizeinheatmap.2function?【发布时间】:2013-12-2620:49:38【问题描述】:我正在使用heatmap.2包制作热图:heatmap.2(as.matrix(FOOBAR.txt[rowSums(abs(FOOBAR.txt))!=0,]),col=scaleyellowred,margin... 查看详情

更改 R 中的栅格空间范围

】更改R中的栅格空间范围【英文标题】:ChangingtherasterspatialextentinR【发布时间】:2017-07-3102:19:16【问题描述】:我有两个栅格,我想将一个的空间范围扩展到另一个。然后将其另存为新栅格。我使用了以下代码。但是,我无法... 查看详情

如何使用标记创建范围滑块并更改填充范围的颜色?

】如何使用标记创建范围滑块并更改填充范围的颜色?【英文标题】:Howtocreaterangesilderwithmarkerandchangecoloroffilledrange?【发布时间】:2019-08-2113:54:59【问题描述】:我已经在某种程度上完成了如下所示的工作。如何实现这样的范围... 查看详情

更改绘图热图中的颜色条标签 (R)

】更改绘图热图中的颜色条标签(R)【英文标题】:Changingthecolorbarlabelsinaplotlyheatmap(R)【发布时间】:2020-12-2610:15:41【问题描述】:我正在处理调查数据,当被问及一个变量是否影响另一个变量时,一个人的回答从“不”到“绝对... 查看详情

r plot_ly scatter 中的自定义颜色范围

】rplot_lyscatter中的自定义颜色范围【英文标题】:Customcolorrangeinrplot_lyscatter【发布时间】:2021-12-2719:14:16【问题描述】:我正在努力为plot_ly散点图中的颜色值设置自定义范围/截止值。data(mtcars)plot_tmp<-plot_ly(data=mtcars,marker=list(s... 查看详情

更改 NSTextView 中的文本选择颜色

...虽然它仍处于选中状态,但背景是所选文本的标准蓝色。如何使标准选择指示器颜色在某些情况下不显示?谢谢!【问题讨论】:【参 查看详情

R Shiny:如何更改表格的背景颜色

】RShiny:如何更改表格的背景颜色【英文标题】:RShiny:Howtochangebackgroundcolorofatable【发布时间】:2014-03-2104:22:47【问题描述】:我找到了如何在Shiny中更改用户界面的背景颜色。我发现的撤回是它还为我用tableOutput显示的表格的背... 查看详情

更改范围滑块的颜色

...o/NpnSlider/。基本上我已经集成了这个功能,但问题是我们如何根据这个滑块的偏好来改变颜色【问题讨论】:【参考方案1】:添加您的css文件-我认为更改范围滑块颜色.slider[_ngcontent-c1].b 查看详情

如何将RGB颜色存储在变量中?

】如何将RGB颜色存储在变量中?【英文标题】:HowtostoreRGBcolourinvariable?【发布时间】:2014-10-0119:06:30【问题描述】:我希望将RGB颜色存储在ExcelVBA项目中的变量中,以设置子中各种单元格/范围的背景颜色。我想在一个变量中设置... 查看详情