2016-10-22 5 views
2

Я делаю проект, который требует использования ggplot2 для построения данных временных рядов. Это набор данных я использую:Используйте ggplot2 для построения данных временных рядов

eur

Это то, что я сделал в настоящее время:

library(ggplot2) 
library(lubridate) 
eur$Date <- as.Date(eur$Date) 
ggplot(eur, aes(Date, EUR)) + geom_line() 

plot

И я получил это очень странный сюжет. Может кто-нибудь помочь мне решить проблему?

+0

Пожалуйста, поделитесь некоторые данные вашего dataframe 'eur'. – Jan

+0

Загрузил скриншот eur. Вы можете щелкнуть по нему. –

+0

Похоже, что ваш столбец 'EUR' является фактором. Проверьте с 'str (eur)' что 'Date' имеет класс' Date', а 'EUR' имеет тип' numeric', а не коэффициент. – hvollmeier

ответ

0

Нужно масштабировать данные. Можете ли вы подробнее рассказать о том, как выглядят данные. Это форматирование может помочь вам. Мне нужно более глубокое понимание данных, хотя ответ

library(ggplot2) 
library(lubridate) 
ggplot(aes(Date, EUR)) + geom_line() + 
scale_x_date(format = "%b-%Y") + xlab("") + ylab("") 
+1

Данные - это ежедневный курс валюты. Я просто попробовал свой код, но R показал мне эту «Ошибка: ggplot2 не знает, как обращаться с данными класса uneval». –

0

@Niranja Б-га не будет работать, потому что format не является аргументом в scale_x_date.

Следующий подход должен сделать работу:

df$Date <- as.Date(df$Date) 

library(ggplot2) 

ggplot(df, aes(Date, EUR)) + geom_line() + 
    scale_x_date(date_labels = "%d-%b") 
+0

Thx! Я просто попробовал код, но у меня был сюжет с той же проблемой. Я думаю, что ваш код должен работать, но я не уверен, есть ли в системе какие-то проблемы или у меня есть другие проблемы. –

2

enter image description here

Edit - если ваши данные из класса таймсериях (TS), то вы можете использовать ggfortify функцию'S AutoPlot, и он будет заботиться о конверсия для вас.

library(ggfortify) 
library (ggplot2) 
ggfortify::autoplot(df) 

Если ваши данные не являются периодами времени, то ваш столбец даты может быть фактором или символом.

Если это символ преобразования с as.Date (Foo)

Если это то фактор см ниже

#create the data 
data <- data.frame(
i = c(6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L), 
Date = c("2000-01-03", "2000-01-04", "2000-01-05", "2000-01-06", 
"2000-01-07", "2000-01-10", "2000-01-11", "2000-01-12", 
"2000-01-13", "2000-01-14", "2000-01-18", "2000-01-19"), 
EUR = c(1.0155, 1.0309, 1.0335, 1.0324, 1.0294, 1.0252, 1.0322, 
1.0281, 1.027, 1.0128, 1.0121, 1.0115) 
) 

#check the data 
str(data) 

# convert date column to Date as it is currently a **factor** 
data$Date <- as.Date(as.character(data$Date)) 

#basic plot 
library(ggplot2) 
ggplot(data,aes(Date, EUR)) + geom_line() + geom_point() 

## plot can be tidied up further using lubridate/scales packages 

#sessionInfo() 
# R version 3.4.0 (2017-04-21) 
# Platform: x86_64-w64-mingw32/x64 (64-bit) 
# Running under: Windows 7 x64 (build 7601) Service Pack 1 
# 
# Matrix products: default 
# 
# locale: 
# [1] LC_COLLATE=English_United Kingdom.1252 LC_CTYPE=English_United Kingdom.1252 
# [3] LC_MONETARY=English_United Kingdom.1252 LC_NUMERIC=C       
# [5] LC_TIME=English_United Kingdom.1252  
# 
# attached base packages: 
# [1] stats  graphics grDevices utils  datasets methods base  
# 
# other attached packages: 
# [1] ggplot2_2.2.1 
# 
# loaded via a namespace (and not attached): 
# [1] labeling_0.3  colorspace_1.3-2 scales_0.4.1  compiler_3.4.0 lazyeval_0.2.0 
# [6] plyr_1.8.4  tools_3.4.0  gtable_0.2.0  tibble_1.3.3  Rcpp_0.12.11  
# [11] grid_3.4.0  rlang_0.1.1  munsell_0.4.3 
# > 
Смежные вопросы