2010-03-09 22 views
11

के लिए समय स्केल अक्ष को समायोजित करने के लिए कैसे मैं डेटा फ्रेम के साथ काम कर रहा हूं जहां कॉलम में से एक POSIXct डेट-टाइम मान होते हैं। मैं इन ggplot2 का उपयोग कर timestamps का हिस्टोग्राम साजिश कोशिश कर रहा हूँ, लेकिन मैं दो समस्याएं आ रही हैं:ggplot हिस्टोग्राम

  1. मैं नहीं जानता कि geom_histogram() में binwidth सेट करने का तरीका। मैं प्रत्येक बिन को एक दिन या एक सप्ताह में सेट करना चाहता हूं। मैंने एक अलग वस्तु प्रदान करने का प्रयास किया है, लेकिन मुझे एक त्रुटि मिलती है। मैंने binwidth=1 भी कोशिश की लेकिन आर बस लटकता है।

  2. मैं scale_x_time() में सीमा कैसे निर्धारित करूं? एक ही रास्ता मैं यह काम करने के लिए मिल सकता है as.Date() उपयोग करते हुए मेरे POSIXct timestamps परिवर्तित करके किया गया था।

+0

भी देखें http://stackoverflow.com/questions/10770698/understanding-dates-and-plotting-a-histogram-with-ggplot2-in-r –

उत्तर

21
  1. binwidth, सेकंड में मापा जाता है, इसलिए करने के लिए प्रति सप्ताह बिन binwidth=7*24*60*60 निर्धारित किया है।
  2. सीमा 2 POSIXct वस्तुओं की एक वेक्टर के रूप में दिया जा सकता है।

एक उदाहरण:

y<-as.POSIXct('1970/01/01')+cumsum(rnorm(100,mean=24*60*60,sd=24*60*60)) 
p<-qplot(y,binwidth=7*24*60*60,fill=I('steelblue'),col=I('black')) 
p<-p+scale_x_datetime(major="1 week", 
         minor="1 days", 
         format="%e/%m/%Y", 
         limits=c(as.POSIXct('1970/02/01'), 
           as.POSIXct('1970/03/31'))) 
print(p) 
+0

नाइस । लेकिन क्या आपका मतलब प्रारूप के रूप में "% d /% m /% y" था? –

+2

% डी एक अग्रणी शून्य देता है जबकि% ई एकल अंकों के दिनों में एक अग्रणी स्थान देता है। वास्तव में यह सुनिश्चित नहीं है कि कौन सा बेहतर दिखता है। –

+1

धन्यवाद! पैमाने के साथ मेरा मुद्दा स्केल_एक्स_टाटाइम() के बजाय स्केल_एक्स_टाइम() का उपयोग करने के कारण था। – Dave