图像中的r轴标签

时间:2014-12-10 16:51:08

标签: r image label axis

我需要根据呼叫中心的空间位置绘制指标。 我用R写了一个小例子:

tt<-data.frame(a1=c(0.4,.5,.5,.7),a2=c(.5,.6,.7,.8), a3=c(.8,.7,.9,.8))
row.names(tt)<-paste("L", 1:4, sep='')
tt<-as.matrix(tt)
tt

所以我的矩阵是:

> tt
    a1  a2  a3
L1 0.4 0.5 0.8
L2 0.5 0.6 0.7
L3 0.5 0.7 0.9
L4 0.7 0.8 0.8

我试过了:

palette <- colorRampPalette(c('#f0f3ff','#0033BB'))(256)
library(fields)
image.plot(t(tt[rev(order(row.names(tt))),]),col = palette, axes=F ,
       lab.breaks=NULL)

我必须对矩阵进行转置和重新排序,因为我想要你在表格中阅读它的方式。

所以我得到了:

enter image description here

我需要在每个方块旁边添加行名和列名。例如,左上角应该有&#34; L1&#34;在左边和&#34; a1&#34;在顶部。

另外,我想在每个方格中添加值。

我试过了轴()但是得到了错误的结果。我在R中做图表时很新,所以任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:5)

即使使用axis参数,outer命令似乎也不会在图像外部绘制标签。

如果您在image

之后使用add=TRUE功能(image.plot),它确实有效
image.plot(t(tt[rev(order(row.names(tt))),]),col = palette, axes=FALSE, 
                                                          lab.breaks=NULL)

# axis labels
image(t(tt[rev(order(row.names(tt))),]), col = palette, axes=FALSE, add=TRUE)
axis(3, at=seq(0,1, length=3), labels=colnames(tt), lwd=0, pos=1.15)
axis(2, at=seq(1,0, length=4), labels=rownames(tt), lwd=0, pos=-0.25)

# add values
e <- expand.grid(seq(0,1, length=3), seq(1,0, length=4))
text(e, labels=t(tt))

enter image description here

答案 1 :(得分:3)

我认为你使用ggplot会更开心 - 它使这种事情变得简单,更不容易出错,并且绘图代码更具可读性。为此,您需要将数据保存在数据框中,并将其融合为长形式的数据框。 (这里我使用reshape2包中的melt,但你也可以在这个表单中设置你的数据帧开始)。试试这个:

library(ggplot2)
library(reshape2)

tt<-data.frame(a1=c(0.4,.5,.5,.7),a2=c(.5,.6,.7,.8), a3=c(.8,.7,.9,.8))
tt$row <- paste("L", 1:4, sep='')
tt_melt <- melt(tt)

ggplot(data=tt_melt,
       aes(x=variable, y=row, fill=value)) + geom_tile() + 
       geom_text(aes(label=value), color='white') + theme_bw()

enter image description here

ggplot还允许您根据需要控制色标。如果您打算在R中进行策划,那么花几个小时学习ggplot是值得的!