【问题标题】:Reshape/melt a dataframe for scatter plot重塑/融化散点图的数据框
【发布时间】:2012-11-08 18:48:09
【问题描述】:

我有一个如下所示的数据文件:

x   ys --------------------->
1   20   25   30   12   22   12
2   12    9   12   32   12 
3   33   12   11    6    1
4    5   10   41   12    3
5    7   81   12   31    8   3   4   11

我想制作一个带有一个 x 值和多个 y 值 (ys) 的散点图。我试图将 reshape 与熔化一起使用,但我无法创建正确的数据结构来制作此图。如何在 R 中执行此操作并使用 ggplot 绘图?感谢您的帮助。

【问题讨论】:

    标签: r ggplot2 reshape2


    【解决方案1】:

    那么melt 有什么问题? geom_point() 有什么问题吗?很难说这是不是你想要的:

    library( "reshape2" )
    library( "ggplot2" )
    
    df <- data.frame( x = rnorm(20), ya = rnorm(20), yb = rnorm(20), yc = rnorm(20) )
    df <- melt(df, id.vars="x", variable.name="class", value.name="y")
    
    ggplot( df, aes( x = x, y = y) ) +
      geom_point( aes(colour = class) )
    
    ggplot( df, aes( x = x, y = y) ) +
      geom_point() +
      facet_wrap( "class" )
    

    【讨论】:

    • 感谢您的帮助。我没有数据的标题名称。请注意,y 值有很多列,因此 value.name="y" 对我不起作用。
    • @user1728853 如果您的 data.frame 没有标头名称,为什么不花一些:colnames( df ) &lt;- c("ya", "yb", ...)?另外,value.name不是原始data.frame中的列名,而是熔解后的value列名。如果这个例子没有带来你想要的输出,你应该告诉我们,你到目前为止尝试了什么,也许可以提供一个合理的数据子集。请参阅? dput
    【解决方案2】:

    您可以使用matplot 函数。

    假设您的数据位于名为 myDat 的对象中,并且 x 值位于 1 列中,y 值位于其他列中,

    matplot(x = myDat[, 1], y = myDat[, -1], type = "p", pch = 21)
    

    会产生类似的东西

    或者为ggplot2like 主题使用latticeExtra 包:

    library(latticeExtra)
    
    xyplot(as.formula(paste(paste0(names(myDat)[-1], collapse = "+"), "~",
      names(myDat[1]))),
      data = myDat, par.settings = ggplot2like(), grid = TRUE)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多