Вторая шкала y с пакетом ggplot - PullRequest
0 голосов
/ 29 апреля 2020

Я хотел бы изменить тики второй шкалы y, начиная с z[1] и заканчивая z[17]. Ниже я представил MWE с набором данных и кодом ggplot

             x1           x2           x3           x4         y           z
       59.72297     58.92972     61.34541     57.20393   (6.5,7]   0.0000000
       59.03954     58.24224     60.67139     56.50889   (7,7.5]  -0.6834285
       58.35261     57.55155     59.99327     55.81127   (7.5,8]  -1.3703668
       57.66241     56.85789     59.31130     55.11136   (8,8.5]  -2.0605641
       56.96921     56.16153     58.62573     54.40941   (8.5,9]  -2.7537648
       56.27326     55.46274     57.93679     53.70571   (9,9.5]  -3.4497086
       55.57484     54.76178     57.24476     53.00053  (9.5,10]  -4.1481307
       54.87421     54.05892     56.54987     52.29415 (10,10.5]  -4.8487626
       54.17164     53.35445     55.85240     51.58685 (10.5,11]  -5.5513324
       53.46741     52.64863     55.15261     50.87892 (11,11.5]  -6.2555650
       52.76179     51.94176     54.45078     50.17063 (11.5,12]  -6.9611827
       52.05507     51.23411     53.74717     49.46227 (12,12.5]  -7.6679055
       51.34752     50.52596     53.04207     48.75413 (12.5,13]  -8.3754518
       50.63943     49.81760     52.33575     48.04649 (13,13.5]  -9.0835386
       49.93109     49.10932     51.62850     47.33963 (13.5,14]  -9.7918820
       49.22277     48.40139     50.92059     46.63384 (14,14.5] -10.5001978
       48.51477     47.69410     50.21232     45.92939 (14.5,15] -11.2082017

p <- ggplot(data = df, aes(x = y, y = x1)) + geom_bar(stat="identity", fill="steelblue")
p + geom_line(data = df, mapping = aes(x = y, y = x1 + z, group = 1), size = 2, color = 'red') + 
scale_y_continuous(name = "Axis 1", sec.axis = sec_axis(trans = ~. -59.72, name = "Axis 2"))

1 Ответ

0 голосов
/ 29 апреля 2020
p <- ggplot(data = df, aes(x = y, y = x1)) +
  geom_bar(stat="identity", fill="steelblue")
p +
  geom_line(data = df, mapping = aes(x = y, y = x1 + z, group = 1), size = 2, color = 'red') + 
  scale_y_continuous(name = "Axis 1",
                     sec.axis = sec_axis(trans = ~ approx(range(.), range(df$z), xout=.)$y,
                                         name = "Axis 2"))

ggplot2 plot

(Я не в полном восторге от выхода на df изнутри формации trans, но в этом она кажется достаточно безвредной контекст.)

Я делаю думаю, что это нарушает интерпретацию исходных данных. То есть, x1 охватывает от 48,5 до 59,7 и z от -11,2 до 0, но график утверждает, что диапазон z связан с диапазоном x1 от 0 до 59,7, поэтому наклон отношения неверно заявлены. Хотя я предполагаю, что эти данные являются лишь выборочными данными для ответа на этот вопрос, мне интересно, есть ли повод для беспокойства по поводу неправильного представления сравнений значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...