2015-02-13 12 views
5

इस उदाहरण पर विचार:lubridate और तारीख अक्ष के लिए प्रभावी ढंग से ggplot2 का उपयोग

library(ggplot2) 
library(lubridate) 

set.seed(4) 
date <- seq(from = as.POSIXct("2012-01-01"), to = as.POSIXct("2014-12-31"), by = "days") 
value <- c(rnorm(274, 50, 1), rnorm(274, 55, 1), rnorm(274, 55, 2), rnorm(274, 60, 2)) 
df  <- data.frame(date, value) 

head(df) 
#   date value 
# 1 2012-01-01 50.21675 
# 2 2012-01-02 49.45751 
# 3 2012-01-03 50.89114 
# 4 2012-01-04 50.59598 
# 5 2012-01-05 51.63562 
# 6 2012-01-06 50.68928 

ggplot(df, aes(x=yday(date), y=value, color=factor(year(date)))) + 
    geom_line() 

कौन इस साजिश उत्पन्न करता है:

Plot

क्या अक्ष महीने से एक तिथि के रूप में स्वरूपित करने के लिए कुछ तरीके हैं ? मैं lubridate और scale_x_date दोनों संभव होने पर लाभ उठाने का एक साफ तरीका निर्धारित करने की कोशिश कर रहा हूं?

शायद इस प्रकार के ग्राफ को बनाने के बेहतर तरीके हैं? यही है, साल के आधार पर कारक बनाते हैं और उन्हें एक-दूसरे के ऊपर प्लॉट करते हैं? (नोट: मैं इस उदाहरण के लिए facet_wrap या facet_grid का उपयोग नहीं करना चाहता)।

उत्तर

8

एक समाधान उदाहरण वर्ष के लिए, एक और साल में अपने dataframe के लिए एक स्तंभ उस दिन प्रत्येक पंक्ति के लिए शामिल होंगे और महीने (सभी पंक्तियों के लिए एक ही) जोड़ने के लिए हो सकता है 2015.

df$days<-as.Date(format(df$date,"%d-%m-2015"),format="%d-%m-%y") 

आप तब के रूप में x

library(scales) 
ggplot(df, aes(x=days, y=value, color=factor(year(date)))) + 
    geom_line()+scale_x_date(labels = date_format("%b")) 

enter image description here

संपादित इस स्तंभ का उपयोग प्लॉट कर सकते हैं: सरलीकृत df$days लाइन

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