我想在我的图片情节中使用我自己的特定颜色。我是ggplot2中的新手,所以从here查看了它的手册并尝试重复一些内容;但我无法弄清楚如何提供我的色条,就像我对图形图一样。
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,&#34; mm&#34;):&#39; x&#39;和&#39;单位&#39;必须有长度&gt; 0 *
答案 0 :(得分:3)
只是为了澄清@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")
这给出了一个具有更宽梯度的图:
答案 1 :(得分:0)
我认为您应该更改low=
中mid=
,high=
和scale_fill_gradient2()
值的值。对于low=
,我使用mycol
的第一个值,high=
的最后一个值为mycol
,而mid=
使用的是256. value(middle)。同时将midpoint=
更改为256,因为这是您的颜色数量的中点。
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")