R矩阵图,颜色阈值和网格

时间:2012-08-22 21:43:13

标签: r matrix plot gridlines

我的矩阵由0到100之间的值组成,尺寸为100 x 100。 我基本上想要绘制这个矩阵,但是将所有值都高于50例如红色和以下蓝色。最重要的是,我想添加一个漂亮的grayisch网格,就像他们在这里用ggplot做的那样:

http://learnr.wordpress.com/2009/07/15/ggplot2-version-of-figures-in-lattice-multivariate-data-visualization-with-r-part-5/

我想知道实现这一目标的最简单方法是什么?我不确定我是否想尝试ggplot,因为它看起来很复杂到目前为止我所看到的。对于这样的任务,还没有其他简单的情节函数吗?

3 个答案:

答案 0 :(得分:6)

在基础图形中它只是:

image(x, col=c("red","blue")[1+(x>50)] )

添加网格使用:

grid(nx=100, ny=100, lty=1)

答案 1 :(得分:4)

如果您的数据位于矩阵中并且您需要热图类型图,我不能100%确定。或者,如果它是某种其他形式,并且您想要一个像您链接的那样的散点图。我只是假设您的数据与描述的一样,并且您需要热图。我想它是这样的:

   x=abs(rnorm(100*100,50,25))
    x=matrix(x,nrow=100)

所以我会重新整形数据,因此它看起来像xy坐标:

require(reshape2)
require(ggplot2)
x1=melt(x)
names(x1)=c("x","y","color")

然后我会把我的截止变成一个因素:

x1$color=factor(x1$color>50)
levels(x1$color)=c("lessthan50","more than 50")

然后用:

调用ggplot
qplot(x, y, fill=color, data=x1,geom='tile')

enter image description here

答案 2 :(得分:0)

你可以使用levelplot

来做到这一点
x <- abs(runif(100*100,0, 100))
x <- matrix(x,nrow=100)
levelplot(x, cuts=1, col.regions=c("red", "blue"))