R中的线图上有多条线

时间:2018-04-02 13:11:44

标签: r ggplot2 line-plot

我试图在R中创建一个线图,显示不同位置的线条。

我的数据位于第一列中Year的表格中,地点England, Scotland, Wales, NI为单独的列:

     Year   England Scotland Wales  NI
1  2006/07      NA     411   188   111
2  2007/08      NA     415   193   112
3  2008/09      NA     424   194   114
4  2009/10      NA     429   194   115
5  2010/11      NA     428   199   116
6  2011/12      NA     428   200   116
7  2012/13      NA     425   199   117
8  2013/14      NA     427   202   117
9  2014/15      NA     431   200   121
10 2015/16   3556      432   199   126
11 2016/17   3436      431   200   129
12 2017/18   3467      NA    NA    NA

我正在使用ggplot,并且可以获得任何地方的线图,但是我很难在同一个地块上获取所有地点的线条。

如果我在列中也有位置(而不是在顶部),似乎这可能会起作用,因为我可以在下面的代码中将y设置为该列,而不是列。特定的地方。但这似乎有点复杂,因为我现有的格式中有很多数据,我希望有一种方法可以用我的格式或者快速转换它来实现这一点。

ggplot(data=mysheets$sheet1, aes(x=Year, y=England, group=1)) +
  geom_line()+
  geom_point()

据我所知,我需要重新塑造我的数据(长篇形式?)但是我还没有找到一种方法可以做到这一点我没有地方专栏(也就是说,我每个地方都有一个专栏,但是表格没有办法说这些都是地方和同类的东西)。

我也尝试过调换我的数据,所以这些地方都在旁边而且年份都在顶部,但R仍然有自己的列标题 - 我想另一个选择可能是如果可能的话将这些年份作为标题并由R识别?

1 个答案:

答案 0 :(得分:2)

正如您所说,您必须转换为长格式才能充分利用ggplot2

library(ggplot2)
library(dplyr)

mydata_raw <- read.table(
  text = "
  Year   England Scotland Wales  NI
  1  2006/07      NA     411   188   111
  2  2007/08      NA     415   193   112
  3  2008/09      NA     424   194   114
  4  2009/10      NA     429   194   115
  5  2010/11      NA     428   199   116
  6  2011/12      NA     428   200   116
  7  2012/13      NA     425   199   117
  8  2013/14      NA     427   202   117
  9  2014/15      NA     431   200   121
  10 2015/16   3556      432   199   126
  11 2016/17   3436      431   200   129
  12 2017/18   3467      NA    NA    NA"
)

# long format
mydata <- mydata_raw %>% 
  tidyr::gather(country, value, England:NI) %>% 
  dplyr::mutate(Year = as.numeric(substring(Year, 1, 4))) # convert to numeric date

ggplot(mydata, aes(x = Year, y = value, color = country)) + 
  geom_line() +
  geom_point()

enter image description here