代码之家  ›  专栏  ›  技术社区  ›  mysteRious

ggplot看起来像r中的主效果plot,但不是

  •  0
  • mysteRious  · 技术社区  · 5 年前

    我试图制作一个图表,看起来像一个主要的效果图,但不是来自现场分析,只是输出本身。这是我的数据:

    > gains.df
      var   level1   level2      gain
    A  x1 12.44224 16.15509 -3.712853
    B  x2 16.24322 12.35410  3.889120
    C  x3 16.54085 12.05647  4.484381
    D  x4 16.00008 12.59725  3.402832
    E  x5 15.62463 12.97269  2.651939
    

    我正在制作的图表是这样的,每个 var ,两个因素水平为 level1 level2 (对应于1和2),并且线段是从 级别1 左边的值和 级别2 右边的值。因此,最终的图表应该有五个线段,其中的斜率反映了 gain 列。

    enter image description here

    我正在尝试:

    ggplot(gains.df, aes(level1,level2)) + geom_line() + facet_wrap(~var) 
    

    不幸的是,它产生了这个结果,并给出了水平轴上的奇数值。

    enter image description here

    我觉得我错过了一些非常直截了当的事情,并寻求一些建议。这是数据。谢谢您。

    gains.df <- structure(list(var = structure(1:5, .Label = c("x1", "x2", "x3", 
    "x4", "x5"), class = "factor"), level1 = c(12.4422350148863, 
    16.2432212378588, 16.5408518645381, 16.0000771728686, 15.6246308859921
    ), level2 = c(16.155087746947, 12.3541015239745, 12.0564708972952, 
    12.5972455889646, 12.9726918758412), gain = c(-3.71285273206076, 
    3.88911971388437, 4.48438096724297, 3.40283158390399, 2.65193901015094
    )), class = "data.frame", row.names = c("A", "B", "C", "D", "E"
    ))
    
    1 回复  |  直到 5 年前
        1
  •  0
  •   Jon Spring    5 年前

    前两个任期 ggplot(aes() 分别引用x和y值,因此在数据进入ggplot之前,将其重新格式化为更长的格式会有帮助。在本例中,我将列名移到了一个新的列“level”中,并将其中的值移到了一个新的列“value”中。

    library(tidyverse)
    gains.df %>%
      select(-gain) %>%
      pivot_longer(-var, "level", "value") %>%
      ggplot(aes(level, value, group = var)) +
      geom_line() +
      facet_wrap(~var)
    

    enter image description here

    推荐文章