**240**wrote:

HI,

I got a question about how to assign color value in image() function. I thought the col option works as a vector with the same length of Z, with color of each cell in the matrix Z corresponding to the values in. However, it confused me with different result.

To make my question simple, let's say I want to make a color image for a vector x=1:4 with corresponding color for each cell.

`x=1:4 `

`image(1,1:length(x), matrix(x, nrow=1, ncol=length(x)), col=`

c("blue","red",'green','yellow')`)`

The output image looks like this:

However, if I use a different x, say

x=c(3,1,2,1) image(1,1:length(x), matrix(x, nrow=1, ncol=length(x)), col=c("blue","red",'green','yellow'))

I expected the color (from bottom to up) order should be green-->blue-->red-->blue, however, I got a very different order:

I guess I misunderstand how to use the color option in the function. Can someone please help to advise? Thanks

-Xianjun

This is interesting. If you receive the Yellow color from the end:

`x=c(3,1,2,1)`

`image(1,1:length(x), matrix(x, nrow=1, ncol=length(x)), col=c("blue","red","green"))`

it will color properly.

If you use 5 colors:

`x=c(3,1,2,1)`

`image(1,1:length(x), matrix(x, nrow=1, ncol=length(x)), col=c("blue","red","green","yellow", "magenta"))`

R will plot one color after other.

If you use 6 colors:

`x=c(3,1,2,1)`

`image(1,1:length(x), matrix(x, nrow=1, ncol=length(x)), col=c("blue","red","green","yellow", "magenta", "grey"))`

R will plot odd colors and then jump to last.

May be something with the algorithm. ?

3.9kThanks for your comments, Deepak.

As my reply below, I guess I figured it out: We always get min(x)=col[1], max(x)=col[last]. For your case, then there are 6 colors, again, 1=blue, 3=grey, 2=green (since it's left close).

240