R levelplot colorkey标签和颜色范围

时间:2014-02-08 02:33:58

标签: r lattice removing-whitespace levelplot

我正在尝试从网格包中创建一个水平图(也是显示轮廓线)。我有几个问题(如下所述)。

迈德特: https://www.dropbox.com/s/ht55g0qlkiou2x2/growth.matrix.stackoverflow.xlsx

require(lattice)      
require(latticeExtra) 
require(xlsx)   

#matrix to be plotted
growth.matrix<-as.matrix(read.xlsx("C:/Users/eckmannm/Dropbox/growth.matrix.stackoverflow.xlsx",sheetName="p4.pct",colIndex=2:8,startRow=3,endRow=15,header=FALSE))

#column values
TempRange<-as.numeric(c(0, 2, 4, 6, 8, 10, 12))
#row values
MeanTemp<-as.numeric(c(6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18))
#x and y axis labels
x.range<-as.numeric(c(6, 8, 10, 12, 14, 16, 18))

#color ramp
col.l <- colorRampPalette(c('red', 'orange', 'yellow', 'green', 'cyan', 'blue'))

colorplot<-
   levelplot(
   growth.matrix, 
   row.values=(MeanTemp),
   column.values=(TempRange),
   col.regions=col.l,
   at=seq(from=0,to=1.01,length=100),   
   lattice.options=list(key=list(cex=4)),
   panel = panel.2dsmoother,
   scales=list((x=list(labels=MeanTemp)), y=list(labels=TempRange)), 
   colorkey=list(at=as.numeric(factor(c(seq(from=0, to=1, by=.20)))),
               labels=as.character(c( "0", "20%", "40%", "60%", "80%", "100%")),
               col=(col.l)))

contourplot<- 
    contourplot(
    growth.matrix, 
    row.values=MeanTemp,
    column.values=TempRange,
    at=seq(from=0, to=1.01, by=.2), 
    panel=panel.2dsmoother,
    label.style=("flat"),
    lwd=2,
    labels=(list(cex=1.5,labels=(c("0", "20%", "40%", "60%", "80%", "100%")))))  

(final.plot= (colorplot + contourplot))

>> dput(head(growth.matrix))
structure(c(0.117236699239957, NA, 0.416693811074919, NA, 0.776134455117953, 
NA, NA, 0.263952225841477, NA, 0.582491856677524, NA, 0.855917480998914, 
NA, NA, 0.423344191096634, NA, 0.6792888165038, NA, NA, NA, NA, 
0.5164223669924, NA, 0.698561346362649, NA, NA, NA, NA, 0.534989142236699, 
NA, NA, NA, NA, NA, NA, 0.507193268186754, NA, NA, NA, NA, NA, 
NA), .Dim = 6:7, .Dimnames = list(NULL, c("X2", "X3", "X4", "X5", 
"X6", "X7", "X8")))

The plot I have been producing

1)我真的想要删除彩色区域边缘的垂直白色边框(轴标签和图形之间)。

2)我希望图例具有离散标签,其断点不同于颜色

3)由于某种原因,轮廓线标签是从图表中绘制出来的

任何帮助将不胜感激!提前谢谢。

1 个答案:

答案 0 :(得分:9)

  

我真的想要删除彩色区域边缘的垂直白色边框(轴标签和图形之间)。

xlim=c(6,18)添加到您的levelplot来电


  

我希望图例具有离散标签,其断点不同于颜色

来自?levelplot

  

:数字向量,指定颜色的变化位置。必须比col矢量长1倍。

     

标签:用于标记at值的字符向量,或更常见的是描述标签特征的列表。此列表可能包含组件标签,at,cex,col,rot,font,fontface和fontfamily。

因此,基本上您可以将colorkey设置为:

colorkey=list(at=seq(0, 1, 0.2), 
                 labels=list(at=c(0, 0.3, 0.6, 0.9), 
                             labels=c("none", "a bit", "a bit more", "a lot"))

请注意,无需使用factoras.numericas.character,因此我将其删除。


  

3)由于某种原因,轮廓线标签是从图表中绘制出来的

始终从帮助页面开始:

  

标签:通常是指示是否应标记轮廓线的逻辑,但存在更复杂控制的其他可能性。有关详细信息,请参见panel.levelplot的帮助页面,该参数在未更改的情况下传递给该参数。该帮助页面还记录了label.style参数,该参数影响标签的呈现方式

而且,在?panel.levelplot我们发现:

  

label.style :控制标签位置和旋转的确定方式。值“平坦”会使标签定位在轮廓最平坦的位置,标签不会旋转。 “对齐”值使标签尽可能远离边界绘制,并旋转标签以与该点处的轮廓对齐。默认情况是混合使用这些方法,除非距离边界太近,否则更喜欢最平坦的位置。

我认为对于您的特定数据,混合(默认)解决方案效果最佳。最简单的方法是从label.style调用中删除contourplot参数。

相同的手册页也有助于标注样式。