5

我想在我的图像图中使用我自己的特定颜色。我是 ggplot2 的新手,所以从这里查看了它的手册并尝试重复一些内容;但我不知道如何提供我的颜色条,就像我为图形图所做的那样。

library(reshape2)
library(ggplot2)

#my specific color list
mycol <- vector(length=512, mode = "numeric")
for (k in 1:256) mycol[k] <- rgb(255, k - 1, k - 1, maxColorValue=255)
for (k in 257:512) mycol[k] <- rgb(511 - (k - 1), 511 - (k - 1), 255, maxColorValue=255)
mycol <- rev(mycol)
ncolors <- length(mycol)

# graphics plot
par(mar = c(5, 13, 1, 6))
image(1:ncol(volcano), 1:nrow(volcano), t(volcano), zlim = c(0, ncolors), col=mycol, axes=FALSE, main="W Matrix", sub = "", xlab= "Components", ylab="Genes")
axis(2, at=1:nrow(volcano), labels=row.names(volcano), adj= 0.5, tick=FALSE, las = 1, cex.axis=0.25, font.axis=1, line=-1)
axis(1, at=1:ncol(volcano), labels=colnames(volcano), adj= 0.5, tick=FALSE,las = 3, cex=1, cex.axis=0.5, font.axis=1, line=-1)


# ggplot2
library(reshape2)
library(ggplot2)
library(ez)
ggplot(melt(volcano), aes(x=Var1, y=Var2, fill=value)) + geom_tile() + scale_color_gradient2(low = muted("red"), mid = "white", high = muted("blue"), midpoint = 0, space = "rgb", guide = "colourbar") # the code does not really use my color bar

*单位错误(tic_pos.c,“mm”):'x'和'units'的长度必须> 0*

4

2 回答 2

5

只是为了澄清@Didzis'的答案,它有效但可能不会产生您正在寻找的渐变......

'midpoint' 是指您希望 'mid' 指定的颜色出现的数值。因此,不要将 'midpoint' 参数设置为 256(它超出 的范围value,这是您着色的向量),明智的做法是将其设置为您所在值范围中间的某个值着色,否则你没有使用你用“低”和“高”指定的整个渐变,这违背了scale_color_gradient2. 确切的值取决于您试图通过视觉传达的内容,但通常使用平均值或中值。在这里,我编辑了 @Didzis 的代码,将 'midpoint' 设置为value

v <- melt(volcano)
ggplot(v, aes(x=Var1, y=Var2, fill=value)) + 
  geom_tile() + 
  scale_fill_gradient2(low = "#0000FF", mid = "#FFFFFF", high ="#FF0000", 
                       midpoint = median(v$value), space = "rgb", guide = "colourbar")

这给出了一个梯度更宽的图:

在此处输入图像描述

于 2013-07-25T19:11:22.687 回答
0

我认为您应该更改 的值和low=中的值。对于我使用的第一个值,最后一个值和使用的 256. 值(中间)。也更改为 256,因为这是颜色数量的中点。mid=high=scale_fill_gradient2()low=mycolhigh=mycolmid=midpoint=

ggplot(melt(volcano), aes(x=Var1, y=Var2, fill=value)) + 
  geom_tile() + 
  scale_fill_gradient2(low = "#0000FF", mid = "#FFFFFF", high ="#FF0000", 
                       midpoint = 256.5, space = "rgb", guide = "colourbar")

在此处输入图像描述

于 2013-07-25T17:43:14.637 回答