2012-10-04 8 views
6

मैं ggplot2 का उपयोग करके एक पहलू प्लॉट बनाना चाहता हूं जिसमें वाई अक्ष की न्यूनतम सीमा तय की जाएगी (0 पर कहें) और अधिकतम सीमा पहलू में डेटा द्वारा निर्धारित की जाएगी (जैसा कि scales="free_y" है। मुझे उम्मीद थी कि निम्नलिखित की तरह कुछ काम करेंगे, लेकिन ऐसी कोई भाग्य:ggplot के साथ पहलुओं पर भाग-निर्धारित, भाग मुक्त अक्ष सीमाएं बनाएं?

library(plyr) 
library(ggplot2) 

#Create the underlying data 
l <- gl(2, 10, 20, labels=letters[1:2]) 
x <- rep(1:10, 2) 
y <- c(runif(10), runif(10)*100) 
df <- data.frame(l=l, x=x, y=y) 

#Create a separate data frame to define axis limits 
dfLim <- ddply(df, .(l), function(y) max(y$y)) 
names(dfLim)[2] <- "yMax" 
dfLim$yMin <- 0 

#Create a plot that works, but has totally free scales 
p <- ggplot(df, aes(x=x, y=y)) + geom_point() + facet_wrap(~l, scales="free_y") 
#Add y limits defined by the limits dataframe 
p + ylim(dfLim$yMin, dfLim$yMax) 

ऐसा नहीं है कि यह एक त्रुटि (length(lims) == 2 is not TRUE) फेंकता है मेरे लिए भी आश्चर्य की बात नहीं है, लेकिन मैं एक रणनीति नहीं सोच सकते हैं पर आरंभ करने के लिए यह समस्या

उत्तर

7

आपके मामले में, निम्न में से कोई भी काम करेगा:

p + expand_limits(y=0) 

p + aes(ymin=0) 
संबंधित मुद्दे