4

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

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

我想知道实现这一目标的最简单方法是什么?我不确定是否要尝试 ggplot,因为从我目前看到的情况来看,它看起来相当复杂。这样的任务没有其他简单的绘图功能吗?

4

3 回答 3

6

在基本图形中,它只是:

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

要添加网格,请使用:

grid(nx=100, ny=100, lty=1)
于 2012-08-23T03:02:14.200 回答
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')

在此处输入图像描述

于 2012-08-22T22:24:00.570 回答
0

你可以用 levelplot 简单地做到这一点,

x <- abs(runif(100*100,0, 100))
x <- matrix(x,nrow=100)
levelplot(x, cuts=1, col.regions=c("red", "blue"))
于 2015-04-28T23:56:14.547 回答