2015-03-02 67 views
1

我有一個2乘2的矩陣,我想根據它們的值爲數字着色(比如我有0-20的數字,我想要着色0-2 =藍色; 2-4 =天藍色...... 12-14 =黃色,18-20 =紅色等)。在Excel中,我只能使用Conditional Formatting選項使用3種顏色(請參見圖)。任何人都知道我是否可以在另一個程序中使用更多顏色(最好是R)。謝謝! PS:請注意,我並不需要散熱圖或等高線圖,因爲我對數字的確切值感興趣。矩陣中的顏色數字根據它們的值

snapshot of my excel spreadsheet with the 3 colors based on the values of the numbers

+0

謝謝,我糾正了。 – user3290846 2015-03-02 18:56:02

+0

xlsx軟件包可能會有用。它似乎可以使用該設置單個單元格的顏色ar字體參數 – OganM 2015-03-02 19:04:00

+0

適用於Mac的Excel 2008,版本12.3.6 – user3290846 2015-03-02 20:00:08

回答

2

這裏是一個解決方案,我希望它有助於

# you need this for the colour ramp 
library(RColorBrewer) 

# setup 
rows <- 10 
collumns <- 10 

# data matrix 
zVals <- round(rnorm(rows*collumns), 2) 
z <- matrix(zVals, rows, collumns) 

# pick the number of colours (granularity of colour scale) 
nColors <- 100 

# create the colour pallete 
cols <-colorRampPalette(colors=c("blue", "grey", "red"))(nColors) 

# get a zScale for the colours 
zScale <- seq(min(z), max(z), length.out = nColors) 

# function that returns the nearest colour given a value of z 
findNearestColour <- function(x) { 
     colorIndex <- which(abs(zScale - x) == min(abs(zScale - x))) 
     return(cols[colorIndex]) 
} 

# empty plot 
plot(1, 1, type = "n", xlim = c(1, rows), ylim = c(1, collumns), 
    axes = F, xlab = "", ylab = "") 

# populate it with the data 
for(r in 1:rows){ 
    for(c in 1:collumns){ 
     text(c, r, z[c,r], col = findNearestColour(z[c,r])) 
    } 
} 

Numbers coloured by value

+0

哎呀抱歉,您想要某些範圍的顏色框?你可以這樣做的一種方法是修改(也許是重命名)上面的'findNearestColour()'函數。無論如何,我希望它給你一個出發點,隨時給我留言解釋。 – roman 2015-03-03 16:19:59

+0

如果你想要相同大小的色塊(但更少),你可以減少'nColors'的尺度粒度。 – roman 2015-03-03 16:26:25

+0

請張貼這個的屏幕截圖。 – 2015-05-31 02:55:46