我使用此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()
为了使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
...
...
答案 0 :(得分:1)
以下是ggplot2
或lattice
的使用方法。这些包使用&#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
或library(ggplot2)
ggplot(d2, aes(x=Topic, y=Value, fill=Variable)) +
geom_bar(stat='identity', position='dodge') +
facet_wrap(~Project)
:
lattice
以上两者都是高度可定制的。请参阅library(lattice)
barchart(Value~Topic|Project, d2, groups=Variable, origin=0)
docs和ggplot2
。