我正在尝试使用循环生成图。
l1<-factor(rep(letters,4))
n1<-abs(rnorm(104))*10000
b1<-rep(c("1","2","3","4","5","6","7","8"),c(2,2,11,24,11,20,33,1))
k1<-rep((rep(c("A","B","C","D"),c(2,3,4,4))),8)
my.df<-data.frame(l1,b1,k1,n1) #make a dataframe
names(my.df)<-c("letter","branch","ltrtype","number") #factor names
library(ggplot2)
branch.list<-unique(my.df$branch)
sayi<-length(branch.list) # list of factor:letters
for (i in 1:sayi) {
branch.iter<-branch.list[i]
my.df.plot<-subset(my.df,my.df$branch==branch.iter,drop=T)
my.df.plot$branch<-factor(my.df.plot$branch) #So that unused levels don't show up
my.df.plot$letter<-factor(my.df.plot$letter) #So that unused levels don't show up
my.df.plot$ltrtype<-factor(my.df.plot$ltrtype) #So that unused levels don't show up
my.df.plot$number<-as.numeric(as.character(my.df.plot$number))
my.df.plot<-data.frame(my.df.plot)
myfilename<-paste(branch.iter,".jpeg",sep="")
jpeg(file=myfilename)
cizim<-ggplot(my.df.plot,aes(letter,number,fill=ltrtype))
cizim<-cizim + geom_bar(width = 1, position = "fill", binwidth = 1) + facet_grid(ltrtype~.)
cizim<-cizim + opts(title=branch.iter)
print(cizim)
dev.off()
}
(Q1):当 x 轴上的级别数改变条形的宽度时,我如何防止这种情况并使每个图中的条形宽度相同?
替代文字 http://img411.imageshack.us/i/95325388.jpg/
替代文字 http://img411.imageshack.us/i/91510133.jpg/
(Q2):当i=7
R 给出以下警告时:
(data$ymin == 0)) 警告(“当 ymin != 0 时填充定义不明确”):需要 TRUE/FALSE 的缺失值
我该怎么办?
(Q3):在这种情况下有没有更简单的方法来降低未使用的级别,所以我不必使用
my.df.plot$branch<-factor(my.df.plot$branch)
每次?