我想在单个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,另一行用于par。
但是,我想要四行:一条用于 var1给定的par = 0 ,另一条用于 var1给定的par = 1 ,然后同样地代表var2。
例如,如果我希望条件是多个参数(例如par2 + par)的组合,该如何扩展?
答案 0 :(得分:3)
如果您以其他方式融化数据,则可以使用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")
输出:
答案 1 :(得分:2)
您需要调整合并功能,并添加同时包含par和var详细信息的group列。我想以下是您想要的?
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")