Почему «сюжет» не отображает линию? - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть этот сюжет, который создает мне некоторые проблемы, так как мне не удается провести красную линию между КИ. Этот сюжет является пятым из серии сюжетов, которые идентичны по своей природе и коду. Только в этом случае линия не отображается. Я не могу понять, почему.

Это мой набор данных и код:

ap_pp = structure(list(appp = c(0.0534256470459521, 0.318338283911788, 
0.510498594892796, 0.659918013907143, 0.847855923395071, 1.33512933449448, 
1.79114871626335), LB_T = c(-0.0039953960988687, -0.00128119112255898, 
1.231602663197e-05, 0.000409544070864543, 0.00117091129359269, 
0.00719127778296817, 0.0141800410470155), UB_T = c(0.00506390903978775, 
0.00764795680079474, 0.010197655871224, 0.0127888162072783, 0.0157862071743087, 
0.0195113089069214, 0.0216429332782514), LB_T = c(-0.0039953960988687, 
-0.00128119112255898, 1.231602663197e-05, 0.000409544070864543, 
0.00117091129359269, 0.00719127778296817, 0.0141800410470155), 
    UB_T = c(0.00506390903978775, 0.00764795680079474, 0.010197655871224, 
    0.0127888162072783, 0.0157862071743087, 0.0195113089069214, 
    0.0216429332782514)), class = "data.frame", row.names = c(NA, 
-7L)) 
  plot(ap_pp$appp, ylim = range(c(ap_pp$LB_T, appp$UB_T)), xlab = "", ylab = "", main = "LSAP", type = "n", xaxt = "n")

axis(1, at = 1:7, labels = load_unscaled_m$Date)

with(ap_pp, polygon(c(xx,rev(xx)),c(LB_T,rev(UB_T)), col = "#FFA6AA", border = FALSE))
 abline(h = 0, col = "black", lty = 2)
  lines(ap_pp$appp, type = "o", lwd = 2, col = "red")

Кто-нибудь может мне помочь?

Спасибо

1 Ответ

1 голос
/ 10 апреля 2020

У вас есть некоторые проблемы:

  1. Опечатка, вы используете appp$UB_T в range(), который не существует. Вам нужен ap_pp$UB_T
  2. Диапазон. Данные линии, которые вы пытаетесь построить, имеют минимальное значение 0,05:
range(ap_pp$appp)
[1] 0.05342565 1.79114872

Однако для оси Y установлено максимальное значение 0,02:

range(c(ap_pp$LB_T, ap_pp$UB_T))
[1] -0.003995396  0.021642933

Так как максимум вашей оси y, 0,0216, меньше минимума данных, которые вы наносите, 0,0534, все точки, которые вы пытаетесь построить, находятся "над" графиком.

Тип графика. Вы говорите «линия», но по умолчанию plot будет строить точки. Если вы хотите строку, используйте type = "l". (Или lines(), как вы делаете позже.)

Я понятия не имею, что такое xx, поэтому я не знаю, что происходит с вашим полигональным кодом. Но, по-видимому, пределы y снова определены как UB_T и LB_T, и поэтому максимум оси y все еще ниже, чем минимум данных в lines()

Дублирующие имена столбцов - плохая идея. У вас есть два столбца с именем LB_T и два с именем UB_T. Они кажутся идентичными, что не так плохо, как если бы они были разными, но я бы настоятельно рекомендовал не использовать повторяющиеся имена столбцов, поэтому нет никакой двусмысленности относительно того, на какой столбец вы ссылаетесь.

Возможно, вам следует включить ap_pp$ppp в вызов range.

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