2014-09-21 2 views
0

Я пытаюсь построить 5 дней исторических данных запаса в R, используя ggplot. Datetime на оси x и значения запаса ('close') на оси y. Я только хочу показать минуты дня, когда фондовый рынок открыт, и мой набор данных ограничен 7 часами в день значений х 5 дней.R: ggplot с datetime по оси x

Но когда я рисую его с помощью ggplot, масштаб изменяется, поэтому я получаю все часы в день.

ggplot(data = df_stock, aes(x = datetime, y = close)) + 
    geom_line() 

Я пробовал использовать эту функцию и использовать функцию помощи R. Я новичок в R, поэтому извиняюсь, если это очень легко решить. Надеюсь, кто-то может вести меня в правильном направлении.

+1

Добро пожаловать в StackOverflow! Пожалуйста, прочитайте информацию о том, как создать [минимальный воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5963610#5963610). Это облегчит вам помощь другим людям. – Jaap

ответ

1

Хотя минимальный пример был бы полезен для решения этого вопроса, можно дать более общий ответ, который может быть полезен.

ggplot2 не имеет возможности для осевой обработки, так как это не считается хорошей практикой. Однако то, что вы здесь делаете, на самом деле является преобразованием переменной --- hours open, а не часами дня. Поэтому вам придется преобразовать переменную. Вы можете сделать это, используя пакет lubridate. Давайте возьмем два дня и представьте, что рынок открыт с 10:00 до 17:00.

require(lubridate) 
dates <- c("2014-01-01 10:00:00 UTC", "2014-01-01 13:00:00 UTC", "2014-01-01 17:00:00 UTC", "2014-01-02 13:00:00 UTC", "2014-01-02 17:00:00 UTC") 
dates <- ymd_hms(dates) 

Теперь вам нужно будет масштабировать данные, чтобы иметь нужное время. Вы можете позвонить в части даты с `lubridate», и разделить на несколько часов в день, когда они здесь 24, а не 7.

hour(dates) <- hour(dates)-10 
scaleddates <- day(dates)-1 + hour(dates)/7 + minute(dates)/60/7 + second(dates)/60/60/7 
scaleddates 
[1] 0.0000000 0.4285714 1.0000000 1.4285714 2.0000000 

Теперь вы можете построить график, с осью х чтение «Дней», а не «Даты». Ось оси теперь как далеко вы через рабочий день.

Смежные вопросы