2014-12-02 61 views
0

我在R中使用levelplot()生成矩阵(36 X 32)的彩色图像。矩阵中包含许多NaN值。当我尝试使用下面的命令如何解决R中空levelplot()的问题?

range = c(815.4, 816.2) 
matpalette <- colorRampPalette(c("blue", "black", "red"))(100) 
levelplot(t(m1),scales = list(draw = FALSE), col.regions = matpalette, xlab = "", ylab = "", at = seq(min(m1), max(m1), length = 100), main=main) 

我收到以下错误信息生成levelplot:

Error in seq.default(min(m1), max(m1), length = 100) : 'from' cannot be NA, NaN or infinite 

此错误的理解。相反,在levelplot使用分钟(M1)和max(M1)(),当我尝试使用以下:

levelplot(m1,scales = list(draw = FALSE), col.regions = matpalette, xlab = "", ylab = "", at = seq(range[1], range[2], length = 100), main=main) 

我得到一个空的情节,只是在颜色条,并与指定为刻度值范围。

enter image description here

我需要的是在矩阵中的值和相同的颜色条和相同的刻度值的曲线图中所提供的levelplot。任何人都可以帮助我吗?

#变2

s <- seq(from=range[1], to=range[2], by=0.1) 

levelplot(t(m1), scales=list(tick.number=0), xlab=" ", ylab=" ", colorkey = list(at=s, labels=as.character(s)),col.regions = two.colors(n=256, start='blue', end='red', middle='black'), main=main) 

,我得到的是这样的

enter image description here

注彩条:使用范围是不同的

+2

显然你的矩阵'm1'有'NA'值同样的事情。也许你应该使用'min(m1,na.rm = TRUE)'和'max(m1,na.rm = TRUE)'。 – shadow 2014-12-02 16:01:13

+0

另外:你确定'm2'的值在815.4和816.2之间吗?因为这会解释问题... – shadow 2014-12-02 16:04:22

+0

是的,这就是问题所在。我尝试了你的建议,它的工作原理,但现在在彩条的刻度线上,我得到了数据集中范围的值。最初,我使用#variant2(插入问题中的命令)来生成格子图。但是,在这种情况下,我得到的图像,但没有得到一个光滑的彩条。 – novicegeek 2014-12-02 16:15:30

回答

0

像这样?

test <- read.csv("test.csv") 
library(lattice) 
library(colorRamps) # for colorRampPalette 
matpalette <- colorRampPalette(c("blue", "black", "red"))(100) 
levelplot(as.matrix(test[,-1]),col.regions=matpalette) 

这里或多或少使用ggplot

library(ggplot2) 
library(reshape2) # for melt(...) 
library(grid)  # for unit(...) 
gg <- melt(test,id="X") 
ggplot(gg,aes(x=X,y=variable,fill=value))+ 
    geom_tile()+ 
    scale_fill_gradientn(name="",colours=matpalette,na.value="white")+ 
    scale_x_continuous(expand=c(0,0))+ 
    scale_y_discrete(expand=c(0,0))+ 
    coord_fixed()+ theme_bw()+ 
    theme(legend.key.height=unit(.15,"npc"))