2012-01-29 32 views
11

मैं सीएसवी प्रारूप में इस फ़ाइल है:आर एक्स प्लस एक्स एक्स अक्ष के साथ: टिक्स लेबल्स को दिन कैसे लगाया जाए?

timestamp,pages 
2011-12-09T11:20:50.33,4 
2012-01-23T17:44:02.71,132 
2012-01-28T15:07:59.34,168 

पहले कॉलम एक टाइमस्टैम्प है, दूसरा एक एक पृष्ठ संख्या है। मुझे लंबवत धुरी पर पृष्ठ गिनती और क्षैतिज धुरी पर टाइमस्टैम्प प्लॉट करने की आवश्यकता है।

टाइमस्टैम्प नियमित रूप से दूरी पर नहीं होते हैं, मेरे पास जनवरी में एक दिन जनवरी में दो दिन बंद होता है।

मैं इस कोड

df = read.csv("my_data.csv") 
df$timestamp = strptime(df$timestamp, "%Y-%m-%dT%H:%M:%S") 
plot(df$timestamp,df$pages) 

की कोशिश की और मैं एक्स अक्ष के बीच में सिर्फ एक टिक के साथ एक साजिश है और लेबल "जन" के साथ: यह गलत नहीं है, लेकिन मैं तीन टिक करना चाहते हैं सिर्फ दिन की संख्या और महीने के साथ।

मैं

plot(df$timestamp,df$pages,xaxt="n") 
axis.Date(1,df$timestamp,"days") 

की कोशिश की, लेकिन कोई एक्स अक्ष साजिश रची है। कोई विचार? धन्यवाद

उत्तर

12

मैं as.Date() अपनी timestamp इस तरह:

df$timestamp = as.Date(strptime(df$timestamp, "%Y-%m-%dT%H:%M:%S")) 

यह तो काम करता है:

plot(df$timestamp,df$pages,xaxt="n") 
axis.Date(1,at=df$timestamp,labels=format(df$timestamp,"%b-%d"),las=2) 

enter image description here

10

यह काम करेगा:

plot(df$timestamp,df$pages,xaxt="n") 
axis.POSIXct(1, at=df$timestamp, labels=format(df$timestamp, "%m/%d")) 

अनिवार्य रूप से axis.POSIXct में (ध्यान दें कि आपके पास अपने डेटा फ्रेम में POSIXct तिथियां हैं) आप निर्दिष्ट करते हैं कि अक्ष टिक्स (at) और लेबल क्या हैं।

आमतौर पर मुझे क्षैतिज की बजाय लंबवत मेरी तिथियों को लेबल पसंद है। साजिश से पहले par(las=2) का उपयोग करने के लिए।

5

मैं इस पाया: http://personality-project.org/r/r.plottingdates.html

कौन मुझे मेरी समाधान दिया ...

dm = read.csv("my_data.csv", sep=",", head=TRUE) 
dm$DateTime <- as.POSIXct(dm$timestamp, format="%Y-%m-%dT%H:%M:%S") 
daterange=c(as.POSIXlt(min(dm$DateTime)), as.POSIXlt(max(dm$DateTime))) 
plot(pages ~ DateTime, dm, xaxt = "n") 
axis.POSIXct(1, at=seq(daterange[1], daterange[2], by="day"), format="%b %d") 

महत्वपूर्ण भागों daterange और at=seq(..., by="day") जा रहा है।

+0

धन्यवाद, मुझे उचित परिणाम प्राप्त करने के लिए अपना कोड स्निपेट बदलना पड़ा: 'dm = read.csv (" my_data.csv ", sep =", ", head = TRUE) डीएम $ डेटटाइम <- as.POSIXct (डीएम $ टाइमस्टैम्प, प्रारूप = "% वाई-% एम-% डीटी% एच:% एम:% एस") daterange = c (as.POSIXlt (मिनट (डीएम $ डेटटाइम)), as.POSIXlt (अधिकतम (डीएम $ डेटटाइम)) प्लॉट (पेज ~ डेटटाइम, डीएम, एक्सएक्सटी = "एन") धुरी। पॉसिक्स (1, पर = सीईसी (डटेरेंज [1], डटेरेंज [2], = "दिन" द्वारा) , प्रारूप = "% बी% डी") ' –

+1

@uvts_cvs आह हाँ, मेरी तिथि/समय अलग कॉलम में थे। अपडेट करूंगी। – jozxyqk

संबंधित मुद्दे