2011-01-30 21 views
36

पर दिनांक लेबल के साथ समय-श्रृंखला प्लॉटिंग मुझे पता है कि यह प्रश्न एक विशिष्ट हो सकता है, लेकिन मुझे इसे करने में कठिनाई हो रही है।एक्स-अक्ष

मैं डेटा निम्न स्वरूप में निर्धारित किया है:

 
    Date   Visits 

    11/1/2010  696537 
    11/2/2010  718748 
    11/3/2010  799355 
    11/4/2010  805800 
    11/5/2010  701262 
    11/6/2010  531579 
    11/7/2010  690068 
    11/8/2010  756947 
    11/9/2010  718757 
    11/10/2010  701768 
    11/11/2010  820113 
    11/12/2010  645259 

मैं x- अक्ष समय का प्रतिनिधित्व & y- अक्ष vists के साथ, एक समय श्रृंखला भूखंड बनाना चाहते हैं। इसके अलावा, मैं एक्स-अक्ष को तारीख के साथ चिह्नित करना चाहता हूं।

dm$newday = as.POSIXct(strptime(dm$Day, format="%Y-%m-%d")) 
plot(as.Date(dm$day),dm$visits) 
axis.Date(1,Day,at=seq(as.Date("2010/10/30"), as.Date("2011/01/29"),by="days")) 
+2

कोड आप उपयोग कर रहे थे Thats:

यहाँ एक उदाहरण है? काम किया? क्या यह अब काम नहीं करता है? त्रुटि संदेश क्या है? – Spacedman

+1

मैंने इस उपयोग-मामले के लिए एक लचीली प्रतिलेख उपयोगिता लिखी, अपना समय श्रृंखला सीएसवी लेना और एक अच्छा ग्राफ बनाना नीचे दिखाया गया एक। इसे github पर प्राप्त करें: https://github.com/doofdoofsf/plotTimeSeries – user2246801

उत्तर

6

आपका कोड त्रुटियों के बहुत सारे है: code मैं उपयोग कर रहा था इस प्रकार है।

  • आप dm$Day और dm$day अप मिश्रण कर रहे हैं। शायद एक ही बात नहीं
  • आपका कॉलम शीर्षलेख Date और Visits है। तो आप उन्हें (मेरा अनुमान है कि) का उपयोग होता dm$Date और dm$Visits
  • के रूप में दिनांक फ़ील्ड में आप %Y-%m-%d इस होना चाहिए %m/%d/%Y

निम्नलिखित कोड साजिश चाहिए कि आप क्या चाहते:

dm$newday = as.Date(dm$Date, "%m/%d/%Y") 
plot(dm$newday, dm$Visits) 
38

1) चूंकि तारीखें "Date" कक्षा का उपयोग करने के लिए सुनिश्चित हैं, "POSIXct" या "POSIXlt" नहीं। सलाह के लिए आर समाचार 4/1 देखें और इसे आजमाएं नोट पर Lines को परिभाषित किया गया है। यहां कोई पैकेज नहीं उपयोग किया जाता है।

dm <- read.table(text = Lines, header = TRUE) 
dm$Date <- as.Date(dm$Date, "%m/%d/%Y") 
plot(Visits ~ Date, dm, xaxt = "n", type = "l") 
axis(1, dm$Date, format(dm$Date, "%b %d"), cex.axis = .7) 

text = Lines के उपयोग सिर्फ उदाहरण आत्म निहित रखने के लिए और वास्तव में यह "myfile.dat" की तरह कुछ के साथ प्रतिस्थापित किया जाएगा है। (जारी छवि के बाद)

screenshot

2) इस के बाद से एक समय श्रृंखला है आप एक समय श्रृंखला प्रतिनिधित्व थोड़ा सरल कोड देने का उपयोग करना चाहते हो सकता है: आप क्या चाहते हैं पर

library(zoo) 

z <- read.zoo(text = Lines, header = TRUE, format = "%m/%d/%Y") 
plot(z, xaxt = "n") 
axis(1, dm$Date, format(dm$Date, "%b %d"), cex.axis = .7) 

निर्भर करता है axis कमांड को दबाने वाले दूसरे मामले में पहले मामले में plot(Visits ~ Date, dm) का उपयोग करने के लिए केवल plot(Visits ~ Date, dm) का उपयोग करने के लिए पर्याप्त साजिश पर्याप्त हो सकती है।

नोट:

Lines <- "Date   Visits 
11/1/2010 696537 
11/2/2010 718748 
11/3/2010 799355 
11/4/2010 805800 
11/5/2010 701262 
11/6/2010 531579 
11/7/2010 690068 
11/8/2010 756947 
11/9/2010 718757 
11/10/2010 701768 
11/11/2010 820113 
11/12/2010 645259" 
18

मैं बात की इस तरह के लिए ggplot2 का उपयोग कर की तरह है:

df$Date <- as.Date(df$Date, '%m/%d/%Y') 
require(ggplot2) 
ggplot(data = df, aes(Date, Visits)) + geom_line() 

enter image description here

2

आप पाठ के साथ धुरी अंकन हैकिंग से दिनांक घुमा सकते हैं ()

Lines <- "Date   Visits 
11/1/2010 696537 
11/2/2010 718748 
11/3/2010 799355 
11/4/2010 805800 
11/5/2010 701262 
11/6/2010 531579 
11/7/2010 690068 
11/8/2010 756947 
11/9/2010 718757 
11/10/2010 701768 
11/11/2010 820113 
11/12/2010 645259" 

dm <- read.table(textConnection(Lines), header = TRUE) 
dm$Date <- as.Date(dm$Date, "%m/%d/%Y") 
plot(Visits ~ Date, dm, xaxt = "n", type = "l") 
axis(1,at=NULL, labels=F) 
text(x = dm$Date, par("usr")[3]*.97, labels = paste(dm$Date,' '), srt = 45, pos = 1, xpd = TRUE,cex=.7) 
2

यह ggplot में संभव है और आप इस कार्य

library(ggplot2) 
Lines <- "Date   Visits 
    11/1/2010 696537 
    11/2/2010 718748 
    11/3/2010 799355 
    11/4/2010 805800 
    11/5/2010 701262 
    11/6/2010 531579 
    11/7/2010 690068 
    11/8/2010 756947 
    11/9/2010 718757 
    11/10/2010 701768 
    11/11/2010 820113 
    11/12/2010 645259" 
    dm <- read.table(textConnection(Lines), header = TRUE) 
    dm <- mutate(dm, Date = as.Date(dm$Date, "%m/%d/%Y")) 
    ggplot(data = dm, aes(Date, Visits)) + 
    geom_line() + 
    scale_x_date(format = "%b %d", major = "1 day") 
-1

मैं ggplot भी पसंद है के लिए scale_date उपयोग कर सकते हैं।

df1 = data.frame(
date_id = c('2017-08-01', '2017-08-02', '2017-08-03', '2017-08-04'),   
nation = c('China', 'USA', 'China', 'USA'), 
value = c(4.0, 5.0, 6.0, 5.5)) 

ggplot(df1, aes(date_id, value, group=nation, colour=nation))+geom_line()+xlab(label='dates')+ylab(label='value') 

enter image description here

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

  • कोई संबंधित समस्या नहीं^_^