R:在彼此之间绘制多个东西

时间:2015-04-17 17:32:26

标签: r

我有一个数据表,我想执行以下操作:

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)

这会产生以下结果: screenshot

原则上它看起来很好但是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

1 个答案:

答案 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")

结果: resulting plot 您可以通过更改参数并在此功能中使用数据来自定义绘图。绘图后使用的其他功能是:

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()函数