Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R+;ggplot:热图。如果值=',则为特定颜色;X';_R_Ggplot2_Heatmap - Fatal编程技术网

R+;ggplot:热图。如果值=',则为特定颜色;X';

R+;ggplot:热图。如果值=',则为特定颜色;X';,r,ggplot2,heatmap,R,Ggplot2,Heatmap,我正在用ggplot和RColorBrewer在R中制作一些热图。我正在绘制一系列整数值,但其中一些数值为“无”,我想给它们涂上特定的颜色。有人能告诉我如何修改我的代码以添加此功能,包括添加第二个显示“新颜色标签”“无”的图例吗?我对R很陌生,所以没有太多的运气独自完成这个 非常感谢!!:) 示例数据 Target A.tg_t0_rep_A B.tg_t0_rep_B C.tg_t0_rep_C D.tg_t0_rep_D E.tg_w2_rep_A F.tg_w2_re

我正在用ggplot和RColorBrewer在R中制作一些热图。我正在绘制一系列整数值,但其中一些数值为“无”,我想给它们涂上特定的颜色。有人能告诉我如何修改我的代码以添加此功能,包括添加第二个显示“新颜色标签”“无”的图例吗?我对R很陌生,所以没有太多的运气独自完成这个

非常感谢!!:)

示例数据

Target  A.tg_t0_rep_A   B.tg_t0_rep_B   C.tg_t0_rep_C   D.tg_t0_rep_D   E.tg_w2_rep_A   F.tg_w2_rep_B   G.tg_w2_rep_C   H.tg_w2_rep_D   I.tg_w4_rep_A   J.tg_w4_rep_B
1 : 12110501    None    0.5625  0.25    0.5714  None    None    0.5 None    None    0.2857
1 : 27262099    0.3333  0.8889  0.6667  0.9231  None    None    0.5556  0.6667  None    0.375
绘图代码

library(ggplot2)
library(RColorBrewer)

data <- read.csv('test.csv', header =TRUE)
rownames(data)=data[,1]
data_shaped <- data.frame(sample = rep(colnames(data), each = nrow(data)),
                          dmr = rownames(data),
                          methylation_level = unlist(data))
# remove first n rows from dataset(first col header mistakenly being analysed)
data_shaped <- data_shaped[-c(1:2), ] 

# set colour palette
jBuPuFun <- colorRampPalette(brewer.pal(n = 9, "RdBu"))
paletteSize <- 256
jBuPuPalette <- jBuPuFun(paletteSize)

# heatmap!
ggplot(data_shaped, aes(x = sample, y = dmr, fill = methylation_level)) +
  theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5)) +
  geom_tile() +
  scale_fill_gradient2(high = jBuPuPalette[1],
                       mid = jBuPuPalette[paletteSize/2],
                       low = jBuPuPalette[paletteSize],
                       midpoint = (max(data_shaped$methylation_level) +
                                     min(data_shaped$methylation_level)) / 2,
                       name = "methylation_level")
库(ggplot2)
图书馆(RColorBrewer)

数据我不确定其中的“无”是如何与数值混合在一起的。这些是否被解读为因素?您可能希望将“None”值设置为
NA
,这是R的特殊缺失值。您可以通过设置
na.strings=c(“,”None”)
读取.table
期间执行此操作

但最后,似乎
scale\u fill\u gradient2
函数有一个
na.value=
参数。因此,如果您将值转换为true
NA
值,那么您可以为它们设置颜色,就像为
high
mid
等设置颜色一样

例如:

#sample data with missing values
dd<-data.frame(
    expand.grid(x=1:10, y=1:10),
    value=rpois(10*10, 10)
)
dd$value[c(5,10,55,77)] <- NA

谢谢您的回复。我可以用“NA”或“NA”来代替“None”,或者由R来处理的任何事情。我尝试了这两种方法,并尝试使用不同颜色的托盘在scale_fill_gradient2中实现na.value选项,但它不起作用。我没有得到任何错误,但是与NA值对应的分片没有什么不同。此外,刻度从0>1上升到0>25,所以看起来NA值是作为数值读入的?@user1995839我添加了样本数据和代码来绘制图。也许您可以编辑原始问题,将
str(data_-shaped)
的结果包括在内,以便我们了解您的数据结构。您需要确保数值是数值。非常感谢您花时间提供帮助。你是一个传奇^_^
ggplot(dd, aes(x=x, y=y, fill=value)) +
   geom_tile() +
   scale_fill_gradient2(high="red",mid="white",low="blue", 
       na.value="yellow", midpoint=mean(dd$value, na.rm=T)
)