Несколько строк данных в одном ggplot2 - PullRequest
0 голосов
/ 25 января 2019

Я хотел бы построить несколько строк в одном ggplot, где каждая строка представляла бы отношение между x и y для двух или более параметров.

Я знаю, как это сделать для одного параметра:

Возьмите следующие данные в качестве примера:

library(ggplot2)
library(reshape2)

rs = data.frame(seq(200, 1000, by=200), 
                runif(5), 
                runif(5), 
                rbinom(n = 5, size = 1, prob = 0.5)) 
names(rs) = c("x_", "var1", "var2", "par")

melted = melt(rs, id.vars="x_")

ggplot(data = melted, 
       aes(x = x_, y = value, group = variable, col = variable)) + 
  geom_point() + 
  geom_line(linetype = "dashed")

Это построит три строки: одну для var1, одну для var2 и одну для пар.

current

Однако мне бы хотелось четыре строки: одна для var1 при заданном par = 0 , а другая для var1 при заданном par = 1 , и то же самое снова для var2.

Как это увеличится, например, если я хочу, чтобы условие представляло собой комбинацию нескольких параметров (например, par2 + par)?

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Если вы растопите данные другим способом, вы можете использовать par, чтобы изменить форму и тип линий, так что хорошо и понятно, какая именно линия:

rs_melt = melt(rs, id.vars = c("x_", "par"))

ggplot(rs_melt, aes(x = x_, y = value, colour = variable, 
                    shape = factor(par), linetype = factor(par))) +
    geom_line(size = 1.1) +
    geom_point(size = 3) +
    labs(shape = "par", linetype = "par")

Вывод:

enter image description here

0 голосов
/ 25 января 2019

Вам необходимо настроить функцию плавления и добавить групповой столбец, который содержит как пар, так и переменные детали. Я думаю, что ниже, что вы хотите?

library(reshape)
library(ggplot2)
rs = data.frame(seq(200, 1000, by=200), runif(5), runif(5), rbinom(n = 5, size = 1, prob = 0.5))
names(rs)=c("x_", "var1", "var2", "par")

melted = melt(rs, id.vars=c("x_", "par"))
melted$group <- paste(melted$par, melted$variable)

ggplot(data=melted, aes(x=x_, y=value, group =group, col=group))+ geom_point() + geom_line(linetype = "dashed")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...