我的矩阵由 0 到 100 之间的值组成,尺寸为 100 x 100。我基本上想绘制这个矩阵,但是将所有高于 50 的值涂成红色,低于 50 的值涂成蓝色。最重要的是,我想添加一个漂亮的灰色网格,就像他们在这里用 ggplot 做的那样:
我想知道实现这一目标的最简单方法是什么?我不确定是否要尝试 ggplot,因为从我目前看到的情况来看,它看起来相当复杂。这样的任务没有其他简单的绘图功能吗?
我的矩阵由 0 到 100 之间的值组成,尺寸为 100 x 100。我基本上想绘制这个矩阵,但是将所有高于 50 的值涂成红色,低于 50 的值涂成蓝色。最重要的是,我想添加一个漂亮的灰色网格,就像他们在这里用 ggplot 做的那样:
我想知道实现这一目标的最简单方法是什么?我不确定是否要尝试 ggplot,因为从我目前看到的情况来看,它看起来相当复杂。这样的任务没有其他简单的绘图功能吗?
在基本图形中,它只是:
image(x, col=c("red","blue")[1+(x>50)] )
要添加网格,请使用:
grid(nx=100, ny=100, lty=1)
我不是 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')
你可以用 levelplot 简单地做到这一点,
x <- abs(runif(100*100,0, 100))
x <- matrix(x,nrow=100)
levelplot(x, cuts=1, col.regions=c("red", "blue"))