更新:删除了现在无关的前导码和更新的进度。
嗨我正在尝试将水平条略微变成热图,它会根据下面的值改变颜色。默认情况下,该栏应为红色,但会根据两个参数的值更改颜色。
我发现有些网页试图对SO产生类似的影响:R matrix plot with colour threshold and grid
How can one mix 2 or more color palettes to show a combined color value
所以我认为最好的方法是水平绘制一系列瓷砖,每个瓷砖都有一个基于两个值的计算颜色。
我设法做的是生成我想要的颜色。我通过获得矩阵[2xn]来做到这一点,其中n是瓦片的数量。 row1包含每个图块的value1,第2行包含每个图块的值2:
colourmatrix[,c(1:5)]
[,1] [,2] [,3] [,4] [,5]
"81" "82" "82" "82" "82"
"58" "58" "58" "58" "58"
然后我通过将以下内容应用于所有列来生成每个图块的颜色:
col.deter <- function(invalues) {
cols <- rgb(green=invalues[1], red=100, blue=invalues[2], maxColorValue=100)
return(cols)
}
cols <- unlist(lapply(1:ncol(colourmatrix), function(i) col.deter(colourmatrix[,i])))
然后我做一个rbind()我的结果是:
> colourmatrix[,c(1:5)]
[,1] [,2] [,3] [,4] [,5]
"81" "82" "82" "82" "82"
"58" "58" "58" "58" "58"
cols "#FFCF94" "#FFD194" "#FFD194" "#FFD194" "#FFD194"
因此,对于每个图块,值越高,混合中添加的绿色越多,值越高,添加的蓝色越多。因此,确定每个图块的颜色并将其添加为第三行。
我现在要做的是像这个页面中使用ggplot2在这个代码的答案中生成的网格:
dat <- expand.grid(blue=seq(0, 100, by=10), red=seq(0, 100, by=10))
dat <- within(dat, mix <- rgb(green=0, red=red, blue=blue, maxColorValue=100))
library(ggplot2)
ggplot(dat, aes(x=red, y=blue)) +
geom_tile(aes(fill=mix), color="white") +
scale_fill_identity()
但想象只有一行。我试图从左到右实现一行瓷砖,它们的颜色由生成的值决定。
我试图用ggplot2和image()来做这个,但是我的尝试都没有了,我通常不会使用ggplot 2我不理解aes和我得到的所有错误,但是我试过了,因为那是什么用于生成由上面的代码块生成的红色和蓝色瓦片图。
我失败的尝试:
ggplot(c(1,ncol(colourmatrix)), 1, aes(x=x, y=y)) +
geom_tile(aes(fill=colourmatrix[3,]), color="white") +
scale_fill_identity()
Error in ggplot.data.frame(fortify(data, ...), mapping) :
Mapping should be created with aes or aes_string
qplot(c(1,ncol(colourmatrix)), c(1,ncol(colourmatrix)), fill=colourmatrix[3,], geom='tile')
Error: Aesthetics must either be length one, or the same length as the dataProblems:c(1, ncol(colourmatrix)), c(1, ncol(colourmatrix))
我也尝试过尝试实现这一目标的图像()页面失败的尝试:
How can one mix 2 or more color palettes to show a combined color value
R matrix plot with colour threshold and grid
谢谢,
Ben W。
答案 0 :(得分:0)
这样的事情(或者在给定窗口位置的总相似度被标准化的版本)? R - ggplot2, several questions, multiple correlated plots
编辑:这只是一个字符串(也就是说,你为A,B,C中的每一个创建一个字符串)。