Получение ошибок отсутствующих значений при рисовании полосатых линий со смешанными линиями и двойной осью Y в ggplot2 - PullRequest
0 голосов
/ 16 июня 2020

В качестве примера данных:

          date     a            b
0    2010/3/31  12.2   71,168.00 
1    2010/6/30  11.4  149,914.90 
2    2010/9/30  10.9  231,281.60 
3   2010/12/31  10.6  320,102.60 
4    2011/3/31  10.2   98,902.80 
5    2011/6/30  10.1  209,217.00 
6    2011/9/30   9.9  324,440.50 
7   2011/12/31   9.6  451,480.10 
8    2012/3/31   8.1  106,938.50 
9    2012/6/30   7.9  225,695.90 
10   2012/9/30   7.8  349,612.90 
11  2012/12/31   7.9  486,983.30 

Я использовал приведенный ниже код, чтобы нарисовать штриховую линию, смешанную и двойную ось Y :

df$date <- as.yearqtr(df$date, format = "%Y-%m-%d")

df_m <- melt(df, id.vars='date')

df_m_x <- df_m %>% 
  filter(variable %in% c("b")) 

df_m_ratio_x <- df_m %>% 
  filter(variable %in% c("a")) %>%
coeff = 1/10000

ggplot() +
  geom_bar(data = df_m_x,  aes(x = date, y = value, fill = variable), alpha = 1.0, stat = 'identity') +
  geom_line(data = df_m_ratio_x,  aes(x = date, y = value, col = variable), size = 0.5) +
  geom_point(data = df_m_ratio_x,  aes(x = date, y = value, col = variable), size = 1) +
  xlab('') +
  scale_y_continuous(
    name = "dollar",
    sec.axis = sec_axis(~.*coeff, name = "%")) +
  scale_color_manual(values = c("a" = "#00AFBB")) +
  scale_x_yearqtr(limits = c(min(df$date), max(df$date)), format = "%YQ%q")

Out:

enter image description here

Howerver, я получаю Removed 2 rows containing missing values (geom_bar) одновременно, вы можете обнаружить, что на графике точки данных 2010/3/31 и 2012/12/31 отсутствуют.

Кто-нибудь может помочь мне выяснить, где я сделал не так, чтобы поднять этот вопрос? Большое спасибо.

1 Ответ

1 голос
/ 17 июня 2020

Работает после добавления scale_x_yearqtr(oob = scales::oob_keep, ...), спасибо @ teunbrand.

ggplot() +
  geom_bar(data = df_m_x,  aes(x = date, y = value, fill = variable), alpha = 1.0, stat = 'identity') +
  geom_line(data = df_m_ratio_x,  aes(x = date, y = value, col = variable), size = 0.5) +
  geom_point(data = df_m_ratio_x,  aes(x = date, y = value, col = variable), size = 1) +
  xlab('') +
  scale_y_continuous(
    name = "dollar",
    sec.axis = sec_axis(~.*coeff, name = "%")) +
  scale_color_manual(values = c("a" = "#00AFBB")) +
  scale_x_yearqtr(oob = scales::oob_keep, limits = c(min(df$date), max(df$date)), format = "%YQ%q")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...