调整R中并排的多个条形图的大小

时间:2016-04-25 22:48:52

标签: r plot sapply

我使用此answer在一个PDF页面中绘制了15个条形图(并排)。问题是数字质量变得非常小。

dat <- read.table("data.txt",header=TRUE)

pdf('plot.pdf')
m <- rbind(c(1,2,3), c(4,5,6),c(7,8,9),c(10,11,12),c(13,14,15))
layout(m)
barcols <- c("red","blue","green","orange","black","yellow")

sp <- split(dat, dat$Project)

sapply(seq_along(sp),
       function(x) {
         dd <- sp[[x]]
         m <- t(`rownames<-`(as.matrix(dd[, -(1:2)]), dd[, 1]))
         bp <- barplot(m,ylim=c(0, 0.4),beside=TRUE,col=barcols)
         title(main=names(sp[x]))
        # abline(h=0)
       }
)
plot(NA,xlim=c(0,1),ylim=c(0,1),ann=FALSE,axes=FALSE)
legend(0,0.6,c("C10","C10","C03","C11","C16","C08"),fill=barcols,cex=1.5)
dev.off()

以上代码的结果如下: enter image description here

为了使x轴数据可读,是否可以调整数字的大小?

数据格式如下:

Topic  Project  C10     C14     C03     C11     C16     C08
T1     P1       0.24    0.00    0.00    0.04    0.04    0.00
T2     P1       0.00    0.30    0.00    0.00    0.00    0.00
T3     P1       0.04    0.04    0.00    0.24    0.00    0.00
T4     P1       0.00    0.00    0.00    0.04    0.33    0.04
T5     P1       0.00    0.09    0.21    0.00    0.00    0.00
T6     P1       0.00    0.09    0.00    0.00    0.00    0.34
T1     P2       0.20    0.00    0.00    0.04    0.00    0.04
T2     P2       0.00    0.22    0.04    0.00    0.00    0.00
T3     P2       0.04    0.00    0.00    0.24    0.00    0.00
T4     P2       0.00    0.00    0.04    0.00    0.33    0.00
T5     P2       0.04    0.00    0.21    0.00    0.00    0.00
T6     P2       0.00    0.04    0.00    0.00    0.00    0.34
T1     P3       0.20    0.00    0.00    0.04    0.00    0.04
T2     P3       0.00    0.22    0.04    0.00    0.00    0.00
T3     P3       0.04    0.00    0.00    0.24    0.00    0.00
T4     P3       0.00    0.00    0.04    0.00    0.33    0.00
T5     P3       0.04    0.00    0.21    0.00    0.00    0.00
T6     P3       0.00    0.04    0.00    0.00    0.00    0.34
...
...

1 个答案:

答案 0 :(得分:1)

以下是ggplot2lattice的使用方法。这些包使用&#34;长格式&#34;数据。对于您的数据集,这意味着将第3列到第8列的值堆叠到一个列中,第二列指示组的名称(即原始列&#39;名称,例如C10,{{1等等)。

C14便于重新整形为长格式:

tidyr

然后,d <- read.table(text='Topic Project C10 C14 C03 C11 C16 C08 T1 P1 0.24 0.00 0.00 0.04 0.04 0.00 T2 P1 0.00 0.30 0.00 0.00 0.00 0.00 T3 P1 0.04 0.04 0.00 0.24 0.00 0.00 T4 P1 0.00 0.00 0.00 0.04 0.33 0.04 T5 P1 0.00 0.09 0.21 0.00 0.00 0.00 T6 P1 0.00 0.09 0.00 0.00 0.00 0.34 T1 P2 0.20 0.00 0.00 0.04 0.00 0.04 T2 P2 0.00 0.22 0.04 0.00 0.00 0.00 T3 P2 0.04 0.00 0.00 0.24 0.00 0.00 T4 P2 0.00 0.00 0.04 0.00 0.33 0.00 T5 P2 0.04 0.00 0.21 0.00 0.00 0.00 T6 P2 0.00 0.04 0.00 0.00 0.00 0.34 T1 P3 0.20 0.00 0.00 0.04 0.00 0.04 T2 P3 0.00 0.22 0.04 0.00 0.00 0.00 T3 P3 0.04 0.00 0.00 0.24 0.00 0.00 T4 P3 0.00 0.00 0.04 0.00 0.33 0.00 T5 P3 0.04 0.00 0.21 0.00 0.00 0.00 T6 P3 0.00 0.04 0.00 0.00 0.00 0.34', header=TRUE) library(tidyr) d2 <- gather(d, Variable, Value, -Topic, -Project) head(d2) ## Topic Project Variable Value ## 1 T1 P1 C10 0.24 ## 2 T2 P1 C10 0.00 ## 3 T3 P1 C10 0.04 ## 4 T4 P1 C10 0.00 ## 5 T5 P1 C10 0.00 ## 6 T6 P1 C10 0.00

ggplot2

enter image description here

library(ggplot2) ggplot(d2, aes(x=Topic, y=Value, fill=Variable)) + geom_bar(stat='identity', position='dodge') + facet_wrap(~Project)

lattice

enter image description here

以上两者都是高度可定制的。请参阅library(lattice) barchart(Value~Topic|Project, d2, groups=Variable, origin=0) docsggplot2