R中的线图上的多条线
Multiple lines on a line plot in R
我正在尝试在 R 中创建一个线图,显示不同位置随时间变化的线。
我的数据在 table 中,第一列为 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()
据我所知,我需要重塑我的数据(变成长格式?)但是我还没有找到一种方法来做到这一点,因为我没有地方列(即,我每个地方都有一列,但 table 没有办法说这些都是地方和同一类东西)。
我也试过转置我的数据,所以位置在下面,年份在上面,但是 R 仍然有自己的 headers 用于列 - 我想另一个选择可能是是否可以将年份设置为 headers 并被 R 识别?
如您所说,您必须转换为长格式才能充分利用 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()
我正在尝试在 R 中创建一个线图,显示不同位置随时间变化的线。
我的数据在 table 中,第一列为 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()
据我所知,我需要重塑我的数据(变成长格式?)但是我还没有找到一种方法来做到这一点,因为我没有地方列(即,我每个地方都有一列,但 table 没有办法说这些都是地方和同一类东西)。
我也试过转置我的数据,所以位置在下面,年份在上面,但是 R 仍然有自己的 headers 用于列 - 我想另一个选择可能是是否可以将年份设置为 headers 并被 R 识别?
如您所说,您必须转换为长格式才能充分利用 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()