я борюсь с чем-то, что, я считаю, должно быть довольно straighforward в R.Multiple внутридневные временных рядов на том же графике
Пожалуйста, рассмотрим следующий пример:
library(dplyr)
library(tidyverse)
time = c('2013-01-03 22:04:21.549', '2013-01-03 22:04:22.349', '2013-01-03 22:04:23.559', '2013-01-03 22:04:25.559')
value1 = c(1,2,3,4)
value2 = c(400,500,444,210)
data <- data_frame(time, value1, value2)
data <-data %>% mutate(time = as.POSIXct(time))
> data
# A tibble: 4 × 3
time value1 value2
<dttm> <dbl> <dbl>
1 2013-01-03 22:04:21 1 400
2 2013-01-03 22:04:22 2 500
3 2013-01-03 22:04:23 3 444
4 2013-01-03 22:04:25 4 210
Моя проблема проста:
Я хочу построить value1
И value2
на одинаковой карте с двумя разными Y-осями.
Действительно, как вы можете видеть в примере, единицы в значительной степени отличаются между двумя переменными, поэтому использование одной оси будет сжимать один из временных рядов.
Удивительно, но получить красивый график для этой проблемы оказалось очень сложно. Я сумасшедший (конечно, не совсем безумный, просто озадаченный;)).
В Python панд, можно было бы просто использовать:
data.set_index('time', inplace = True)
data[['value1', 'value2']].plot(secondary_y = 'value2')
в Stata, можно было бы просто сказать:
twoway (line value1 time, sort) (line value2 time, sort)
В R, я не знаю, как это сделать. Я что-то упустил? Base R, ggplot2
, какой-то странный пакет, любое рабочее решение с достойными настройками будет прекрасно.
Hadley уже неоднократно говорил (и на этом сайте, если вы будете искать), что он думает, что двойные Y-оси вводят в заблуждение, если только они не просто конверсии (например, Celcius и Fahrenheit). Вместо этого используйте масштаб шкалы или грани, например. 'Библиотека (tidyverse); data%>% gather (var, val, -time)%>% ggplot (aes (time, val, color = var)) + geom_line() + scale_y_log10() ' – alistaire
@alistaire это не дубликат, потому что здесь есть компонент datetime оси x, который отличается от многих примеров в SO. –
@alistaire также, этот аргумент против двойной оси - чистая чепуха. Откройте любую эконометрическую книгу, содержащую временные ряды, и вы увидите повсюду графики с двумя осями. То, что двойная ось y вводит в заблуждение людей, абсурдна. Конечно, никто не считает, что линия, пересекающаяся в двухосевом графике, на самом деле пересекает эту точку. Это всего лишь артефакт диаграммы! Двойной осевой график связан с совместным движением. Во всяком случае, иначе ggplot2 - мой любимый ежедневный пакет, конечно. Здесь мне просто нужно что-то, что работает ... –