我需要根据呼叫中心的空间位置绘制指标。 我用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)
我必须对矩阵进行转置和重新排序,因为我想要你在表格中阅读它的方式。
所以我得到了:
我需要在每个方块旁边添加行名和列名。例如,左上角应该有&#34; L1&#34;在左边和&#34; a1&#34;在顶部。
另外,我想在每个方格中添加值。
我试过了轴()但是得到了错误的结果。我在R中做图表时很新,所以任何帮助都会受到赞赏。
答案 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))
答案 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()
ggplot还允许您根据需要控制色标。如果您打算在R中进行策划,那么花几个小时学习ggplot是值得的!