Есть ли способ построить annotation_custom () в той же точке графика, несмотря на входной набор данных? - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть список данных. Фреймы данных имеют столбцы: Dist, GPSSpeed_kmh. Я хочу построить png знака левого поворота в определенной точке графика. Я использовал следующий код для кадра данных df, и результат показан ниже:

  ggplot(df, aes(Dist, GPSSpeed_kmh)) +
    geom_point(size = 1) + 
    geom_smooth(se = TRUE, span = 0.7) +
    scale_x_continuous(limits = c(-20,11),breaks = seq(-30, 10, by = 10), labels = abs(breaks)) +
    geom_vline(xintercept = -16) +
    annotation_custom(leftbend, xmin = -18, xmax = -14, ymin = 30, ymax = 40)

enter image description here

Но когда я использую другой фрейм данных, значок левого изгиба отображается в другой точке, поскольку аргументы ymin, ymax зависят от входного фрейма данных, чтобы отобразить значок левого изгиба над geom_vline() (xmin, xmax исправлены). Есть ли способ изменить аргументы ymin, ymax во входном фрейме данных? Я хочу получить общий результат вывода для всех моих фреймов данных.

Заранее спасибо!

* если я использую другой фрейм данных, результат будет следующим: enter image description here

Значок даже не отображается, потому что у этого информационного кадра нет значений GPSSpeed_kmh от 30 (ymin) до 40 (ymax), как у другого!

1 Ответ

1 голос
/ 13 апреля 2019

То, что я имел в виду под моим комментарием, следующее:

library(ggplot2)
library(png)             ## for loading the png
library(grid)            ## to render the image
y=c(1,2,3)
x=c(0,0,0)
d=data.frame(x=x, y=y)   ## make sample dataframe

img <- readPNG(system.file("img", "Rlogo.png", package="png"))
g <- rasterGrob(img, interpolate=TRUE)

mi <- 1; ma <- 2.2       ## defining limits for y-axis
ggplot(d, aes(x, y)) + geom_point() + 
       ylim(mi, ma)+     ## set limits for y-axis
       annotation_custom(g, xmin=.020, xmax=.030, ymin=.5*ma) 

Соотнося ymin of annotation_custom с половиной максимума (или любой необходимой вам доли) максимума оси Y, вы убедитесь, что изображение всегда находится в одной и той же позиции.

Дополнительная помощь может быть найдена здесь и здесь .

Надеюсь, это поможет.

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