在addtable2plot中持续着色行 - plotrix

时间:2012-07-13 15:50:56

标签: r plot plotrix

我经常从模拟数据生成直方图,并发现为数据附加相关的十进制表非常有用。我一直在使用plotrix的addtable2plot函数。我还发现突出表中包含50%值的行很有用 - 这是一个例子:

library(plotrix)

# Generate data

mu <- -1.771957
sd <- 0.4716474

foo <- rlnorm(100000, mu, sd)

# Generate decile table
xmax <- .75

max <- format(xmax, digits=2, nsmall=2)

dc <- quantile(foo, probs=seq(0, 1, 0.1))
dps <- c("100%", "90%", "80%", "70%", "60%", "50%", "40%", "30%", "20%", "10%", "0%")
dc <- format(round(dc, digits=2), nsmall=2)

decile <- as.data.frame(dps)
deciles <- as.data.frame(cbind(dps,dc), row.names=FALSE)
colnames(deciles) <- c("Probability", "Rate")
deciles$"Rate" <- as.character(deciles$"Rate")
deciles[1,2] <- "0.00"
deciles[11,2] <- paste(">", max, sep="")

# create a plot
hist(foo, freq=F, xlim=c(0,xmax), breaks=50, col="blue")
top <- max(axis(2))
rect(xleft=(.69*xmax), xright=(1.04*xmax), ybottom=(.615*top), ytop=(.665*top), col="gray91", border=NA)
addtable2plot(x=(1.04*xmax), y=(top), xjust=1, yjust=0, table=deciles, cex=0.82,
          title="Title", hlines=TRUE, vlines=TRUE, bty="o", lwd=1.5, bg="transparent")

正如你所看到的,我只是通过在表格下面添加一个彩色矩形来进行着色。这需要对每个直方图的xleft,ybottom和ytop参数进行大量调整。

有没有办法在没有麻烦的情况下始终如一地突出显示? 谢谢,

1 个答案:

答案 0 :(得分:3)

你的意思是这样,也许:

bg_col <- matrix("white",nrow(deciles),ncol(deciles))
bg_col[11,] <- "grey"

# create a plot
hist(foo, freq=F, xlim=c(0,xmax), breaks=50, col="blue")
top <- max(axis(2))
rect(xleft=(.69*xmax), xright=(1.04*xmax), ybottom=(.615*top), ytop=(.665*top), col="gray91", border=NA)
addtable2plot(x=(1.04*xmax), y=(top), xjust=1, yjust=0, table=deciles, cex=0.82,
          title="Title", hlines=TRUE, vlines=TRUE, bty="o", lwd=1.5, bg= bg_col)

enter image description here

如您所见,我将rect电话留在那里,仅供比较。 ?addtable2plot中有一条简短说明:

  

如果bg是与x相同尺寸的颜色矩阵,则为那些颜色   将是细胞的背景。默认为无背景   颜色。

这就是我弄清楚如何做到这一点的方法。