【问题标题】:Plotting multiple columns on x-axis as series in R [duplicate]在x轴上绘制多列作为R中的系列[重复]
【发布时间】:2021-06-10 13:44:45
【问题描述】:

我有以下数据框:

  STATE STATEFP `2000` `2005` `2010` `2015`
  <chr>   <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
1 AL          1  0.958  0.953  0.953  0.944
2 AR          5  0.373  0.354  0.322  0.314
3 AZ          4  0.493  0.514  0.583  0.541
4 CA          6  0.604  0.675  0.608  0.326
5 CO          8  0.819  0.818  0.862  0.856
6 CT          9  0.870  0.817  0.748  0.791

现在我想制作一个线图,其中 2000、2005、2010 和 2015 位于 x 轴上,并绘制这些列中的值。然后,每一行都应该有一个与正确状态相对应的颜色。

我必须转移我的数据还是更容易?

【问题讨论】:

  • 一个小请求,对于未来的问题:您提供的输出大部分都很好,但是 tibble 的输出需要我们进行一些清理才能使用(` 周围的非典型列名,以及带有&lt;chr&gt; 等的类行)。虽然这比许多问题要好,但当问题包含来自dput 的输出时通常更容易(如我的回答),这样我们就有了一份明确的数据副本。轻微的,真的,但任何一点点有时都会有所帮助。谢谢!

标签: r ggplot2


【解决方案1】:

您好,您可以为此使用 tidyr 的枢轴更长的时间:

library(tidyr)
library(ggplot2)
iris %>% pivot_longer(Sepal.Length:Petal.Width) %>% 
  ggplot(aes(name,value, colour= Species))+geom_boxplot()


  • pivot_longer 将前四列重新排列为更长的格式 创建名称(=前列名称)列和值列。

  • ggplot 使用 geom_boxplot 绘制管道输出

【讨论】:

    【解决方案2】:

    ggplot2 需要“长”数据,而不是宽数据。

    library(ggplot2)
    # library(tidyr) # pivot_longer
    tidyr::pivot_longer(dat, `2000`:`2015`, names_to = "year") %>%
      ggplot(., aes(year, value)) +
      geom_path(aes(color = STATE, group = STATE))
    


    数据

    dat <- structure(list(STATE = c("AL", "AR", "AZ", "CA", "CO", "CT"), STATEFP = c(1L, 5L, 4L, 6L, 8L, 9L), `2000` = c(0.958, 0.373, 0.493, 0.604, 0.819, 0.87), `2005` = c(0.953, 0.354, 0.514, 0.675, 0.818, 0.817), `2010` = c(0.953, 0.322, 0.583, 0.608, 0.862, 0.748), `2015` = c(0.944, 0.314, 0.541, 0.326, 0.856, 0.791)), class = "data.frame", row.names = c("1", "2", "3", "4", "5", "6"))
    

    【讨论】:

    • 谢谢!我已经有了更长的框架,但我把那个更宽了。您关于“geplot 需要长数据”的提示完成了这项工作。谢谢一百万!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    相关资源
    最近更新 更多