簡體   English   中英

ggplot2中的條形寬度geom_bar

[英]bar width in ggplot2 geom_bar

我正在嘗試使用循環生成圖。

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)

每次?

您正在生成一些非常奇怪的情節。 通過使用position="fill"您可以拉伸每個條形使其高度為1(因為對應於該字母的一個觀測值是對應於面板中字母的所有觀測值的100%),從而完全失去了您想要繪制的任何信息。 我的猜測是您的某些問題是由該錯誤引起的,但我不確定。

(Q1)您是否希望在不同分支的圖中,條形寬度相同? 由於您正在更改x變量的級別數,因此條形圖必須變寬以填充圖。 一些解決方案選項:

  • 對圖的寬度進行一些智能調整,以解決該問題。
  • 保留所有x級別-我認為這是最干凈的方法
  • 通過使用scale_x_discreteexpand選項,可以使條形變窄並在圖上scale_x_discrete 因此,如果您總共有N個x值(此處N = 26個字母),但是特定繪圖僅使用其中的k個,則將+ scale_x_discrete(expand=c(0.05, (Nk)/2))到繪圖中。 第一項是乘法擴展因子,這是默認值,第二項是加法因子。

(Q2)i = 7是唯一具有對應於相同字母/ ltrgroup組合的多個number值的組。 條形幾何不知道該怎么辦。 我同意該錯誤消息確實很神秘。

(Q3)一種選擇是避免使用因素-在組合字符向量時使用data.frame(...,stringsAsFactors=FALSE) ,然后子集將不會保留未使用的級別。

(第1季度)我認為無法固定鋼筋寬度。 Aniko關於保持所有級別的建議對我來說最有意義。

(Q2)將binwidth = 1替換為stat="identity" ,因為我認為您不需要stat="bin"

(Q3)的其他選項包括drop.levelsgdata -package,和dropUnusedLevelsHmisc -package。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM