我正在尝试从网格包中创建一个水平图(也是显示轮廓线)。我有几个问题(如下所述)。
迈德特: 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")))
1)我真的想要删除彩色区域边缘的垂直白色边框(轴标签和图形之间)。
2)我希望图例具有离散标签,其断点不同于颜色
3)由于某种原因,轮廓线标签是从图表中绘制出来的
任何帮助将不胜感激!提前谢谢。
答案 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"))
请注意,无需使用factor
,as.numeric
或as.character
,因此我将其删除。
3)由于某种原因,轮廓线标签是从图表中绘制出来的
始终从帮助页面开始:
标签:通常是指示是否应标记轮廓线的逻辑,但存在更复杂控制的其他可能性。有关详细信息,请参见panel.levelplot的帮助页面,该参数在未更改的情况下传递给该参数。该帮助页面还记录了label.style参数,该参数影响标签的呈现方式
而且,在?panel.levelplot
我们发现:
label.style :控制标签位置和旋转的确定方式。值“平坦”会使标签定位在轮廓最平坦的位置,标签不会旋转。 “对齐”值使标签尽可能远离边界绘制,并旋转标签以与该点处的轮廓对齐。默认情况是混合使用这些方法,除非距离边界太近,否则更喜欢最平坦的位置。
我认为对于您的特定数据,混合(默认)解决方案效果最佳。最简单的方法是从label.style
调用中删除contourplot
参数。
相同的手册页也有助于标注样式。