Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ggplot从csv文件创建多行打印_R_Ggplot2 - Fatal编程技术网

R 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

我对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.47207692205,1.48713866811,1.48717177671,1.48729643008,1.48743226992,1.48713866811
50,0.823895293045,0.900091982861,0.900710334491,0.901274168324,0.901413662472,0.901413662472
我想描绘:

  • X轴上的第一列(id)
  • 每个后续的“列”作为线图,在线的点之间进行平滑,以创建一条漂亮的平滑线
  • f1、f2……的图例
  • 指定线条颜色,并在f2列(例如)的线条图中添加标记(例如十字,即“+”)
  • 我对ggplot真的很陌生,所以除了将文件读入R之外,我真的没有其他的东西

    任何帮助我创建如上所述的情节的方法都将非常有教育意义,有助于缩短ggplot学习曲线

    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)