R ggplot从csv文件创建多行打印
我对ggplot(在某种程度上是GGR)完全陌生。我对使用ggplot可以创建的图形的质量感到震惊,我正在尝试学习如何使用ggplot创建简单的多线图 不幸的是,我还没有找到任何教程可以帮助我接近我要做的事情: 我有一个包含以下数据的CSV文件:R ggplot从csv文件创建多行打印,r,ggplot2,R,Ggplot2,我对ggplot(在某种程度上是GGR)完全陌生。我对使用ggplot可以创建的图形的质量感到震惊,我正在尝试学习如何使用ggplot创建简单的多线图 不幸的是,我还没有找到任何教程可以帮助我接近我要做的事情: 我有一个包含以下数据的CSV文件: id,f1,f2,f3,f4,f5,f6 30,0.841933670833,0.842101814883,0.842759547545,1.88961562347,1.99808377527,0.841933670833 40,1.472076922
id,f1,f2,f3,f4,f5,f6
30,0.841933670833,0.842101814883,0.842759547545,1.88961562347,1.99808377527,0.841933670833
40,1.47207692205,1.48713866811,1.48717177671,1.48729643008,1.48743226992,1.48713866811
50,0.823895293045,0.900091982861,0.900710334491,0.901274168324,0.901413662472,0.901413662472
我想描绘:
dat <- structure(list(id = c(30L, 40L, 50L), f1 = c(0.841933670833,
1.47207692205, 0.823895293045), f2 = c(0.842101814883, 1.48713866811,
0.900091982861), f3 = c(0.842759547545, 1.48717177671, 0.900710334491
), f4 = c(1.88961562347, 1.48729643008, 0.901274168324), f5 = c(1.99808377527,
1.48743226992, 0.901413662472), f6 = c(0.841933670833, 1.48713866811,
0.901413662472)), .Names = c("id", "f1", "f2", "f3", "f4", "f5",
"f6"), class = "data.frame", row.names = c(NA, -3L))
然后按您喜欢的方式绘制:
ggplot(dat.m, aes(x=id, y=value, colour=variable)) +
geom_line() +
geom_point(data=dat.m[dat.m$variable=='f2',], cex=2)
其中aes
定义美学,如x值、y值、颜色/颜色等。然后添加“层”。在上一个示例中,我用geom_line()
为ggplot()
部分中定义的内容添加了一行,并用geom_point
添加了一个点,其中我只将它们放在f2
变量上
下面,我用geom\u smooth()
添加了一条平滑线。有关此操作的更多信息,请参阅文档,?geom_smooth
ggplot(dat.m, aes(x=id, y=value, colour=variable)) +
geom_smooth() +
geom_point(data=dat.m[dat.m$variable=='f2',], shape=3)
或所有的形状。在这里,我对ggplot()
的美学进行了塑造。通过将它们放在此处,它们将应用于所有连续层,而不必每次都指定它们。但是,我可以在任何后续层中覆盖ggplot()
中提供的值:
ggplot(dat.m, aes(x=id, y=value, colour=variable, shape=variable)) +
geom_smooth() +
geom_point() +
geom_point(data=dat, aes(x=id, y=f2, color='red'), size=10, shape=2)
然而,一点点的理解只需要时间。完成文档和
ggplot2
网站上给出的一些示例。如果你的经历和我的一样,经过几天或几周的斗争,它最终会成功。关于数据,如果将数据分配到dat
,则代码不会更改<代码>dat-Hmm,谢谢你的代码。唉,这就像我担心的那样神秘。请您对代码进行注释,这样我至少可以看到“要求”1。。2在我的问题中,正在使用ggplot?实现?。最后但并非最不重要的一点是,在代码中,您手工构建了数据帧。我将使用OP要求在点之间平滑插值的数据,将文件中的数据读取到数据框中(a la Excel??);我不知道有什么简单的方法可以做到这一点--geom_smooth
是一个更平滑的插值器,而不是一个平滑的插值器。(我更喜欢标准的线性插值,因为我认为它比数据更“真实”,尽管这显然是美学和解释的问题……)可能的重复
ggplot(dat.m, aes(x=id, y=value, colour=variable, shape=variable)) +
geom_smooth() +
geom_point() +
geom_point(data=dat, aes(x=id, y=f2, color='red'), size=10, shape=2)