我有一个数据表,我想执行以下操作:
1)使用xyplot绘制数据
2)使用rasterimage来标记'这个地块中的某些地区为“好”。 (绿色)或“坏”' (红色)
这是我到目前为止所得到的:
library(lattice)
dataFrame = data.frame(
Z1 = c(0, 1, 2, 3, 4),
Z2 = c(0, 1, 2, 3, 4))
dataFrameResult = data.frame(
install=c(TRUE, TRUE, FALSE))
imageMatrix = matrix(
c(rgb(255, 0, 0, alpha=100, maxColorValue = 255 ),rgb(0, 255, 0, alpha=100, maxColorValue = 255 ),
rgb(255, 0, 0, alpha=100, maxColorValue = 255 ),rgb(0, 0, 255, alpha=100, maxColorValue = 255 )),
nrow = 2, ncol = 2, byrow = TRUE,)
image <- as.raster(imageMatrix)
fig = xyplot(Z1 ~ Z2, group = dataFrameResult$install, data=dataFrame)
plot.new()
print(fig, pos=c(0,0,1,1), more = TRUE)
par(new=TRUE)
plot(c(0, 3), c(0, 3), type = "n", xlab = "", ylab = "")
rasterImage(image, 0, 0, 1, 1, interpolate = FALSE)
这会产生以下结果:
原则上它看起来很好但是rasterImage函数的位置和xyplot的位置不匹配......所以,不要猜测和推动它们(这个程序是否取决于比例等?)我认为将图像绘制成情节可能会很难......对吗?
所以任何人都知道如何实现下面的图像,其中(0,0)为(0,0)in和(1,1)为两个尺度中的(1,1)?或者,更好的是,有没有办法绘制一个xyplot并告诉R在用户指定的函数中绘制背景,如此...
getColor = function(x,y) {
return(rgb(x, y, 0, 0, ...))
}
plot (backgroundColorFunction=getColor)
干杯,
FW
答案 0 :(得分:0)
更简单的方法是使用法线绘图功能,并在绘图后使用rect()等函数标记区域和点()以绘制数据, 例如:
> plot(c(1, 5), c(0, 4), type= "n", xlab = "", ylab ="")
> rect( 2 ,3 , 3 , 4 , col ="green" , border="red" )
> points(c(1:5),c(0:4),col="blue")
> rect(1.8,2.8,2.3,3.4,col="white",border = "white")
结果: 您可以通过更改参数并在此功能中使用数据来自定义绘图。绘图后使用的其他功能是:
plot.default,plot.window,points,lines,abline,axis,title,text,mtext,segments,symbols,arrows,polygon,rect,box,contour,filled.contour and image。
尝试在R帮助中搜索它们,易于使用:)
我要提一下,你可以多次使用这个功能进行一次绘图,例如,如果你想绘制2个rects,只需写两个rect()函数