Я пытаюсь построить 2 набора точек данных и одну строку в R, используя ggplot. Вопрос, который у меня есть, - это легенда. Как видно из прилагаемого изображения, легенда применяет линии ко всем 3 наборам данных, хотя только одна из них нанесена на график с помощью строки.Построение точек и линий отдельно в R с помощью ggplot
Я растопил данные в один длинный кадр, но для этого все еще требуется отфильтровать наборы данных для каждого отдельного вызова до geom_line()
и geom_path()
.
Я хочу, чтобы графика расплавленных данных, построение линии на основе одного набора данных и точек на оставшиеся два, с полной легендой.
Вот пример сценария я написал, чтобы произвести сюжет:
xseq <- 1:100
x <- rnorm(n = 100, mean = 0.5, sd = 2)
x2 <- rnorm(n = 100, mean = 1, sd = 0.5)
x.lm <- lm(formula = x ~ xseq)
x.fit <- predict(x.lm, newdata = data.frame(xseq = 1:100), type = "response", se.fit = TRUE)
my_data <- data.frame(x = xseq, ypoints = x, ylines = x.fit$fit, ypoints2 = x2)
## Now try and plot it
melted_data <- melt(data = my_data, id.vars = "x")
p <- ggplot(data = melted_data, aes(x = x, y = value, color = variable, shape = variable, linetype = variable)) +
geom_point(data = filter(melted_data, variable == "ypoints")) +
geom_point(data = filter(melted_data, variable == "ypoints2")) +
geom_path(data = filter(melted_data, variable == "ylines"))
pushViewport(viewport(layout = grid.layout(1, 1))) # One on top of the other
print(p, vp = viewport(layout.pos.row = 1, layout.pos.col = 1))
вы сделали некоторые исследования? Есть, например, http://stackoverflow.com/questions/18394391/r-custom-legend-for-multiple-layer-ggplot и http://stackoverflow.com/questions/17148679/ggplot2-need-to-construct-a-manual- legend-for-complex-plot – mts
Это не совсем то, что я ищу. Мне не нужна разделенная легенда; Мне нужна одна легенда, так как у меня есть следующие изменения: 1) красная линия без круга; 2) зеленый треугольник без пунктирной линии; 3) синий квадрат без разделительной линии. – Lancophone