如何绘制年份系列的多条线(按因子水平)?

时间:2018-10-24 20:26:06

标签: r plot

我是R的新手,在绘图方面一直遇到麻烦。

我正在尝试使用以下方法创建线图: X轴上的$ YEAR Y轴上的$ METRIC 每个国家/地区使用不同颜色的线(也就是说,同一地块上共有3条线)

$ COUNTRY是一个具有3个级别的因子

COUNTRY YEAR    METRIC
USA     2000    14.874
USA     2001    15.492
USA     2002    13.091
USA     2003    14.717
CAN     1999    15.031
CAN     2000    14.343
CAN     2001    12.972
CAN     2002    13.216
SWE     1999    14.771
SWE     2000    17.033
SWE     2001    15.932
SWE     2002    14.516
SWE     2003    15.655

当我用...创建情节

  

图(df $ YEAR,df $ METRIC,col = df $ COUNTRY,type =“ p”)

我得到了一个图,其中每个(x,y)组合都有点,并且每个水平的因子$ COUNTRY具有不同的颜色

但是,当我尝试为每个国家/地区设置一行时,

  

图(df $ YEAR,df $ METRIC,col = df $ COUNTRY,type =“ l”)

我得到了一条不间断的路线,该路线以“ USA”的4个观测开始,然后回到下一个国家的第一年(“ CAN”)。

screenshot attached

有人可以解释为什么会这样吗? 是否可以仅使用预先构建的功能来创建该图?

在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

除了我上面的评论之外,这是一个基本的base实现。如果最初您的$COUNTRY是一个因素(is.factor(df$COUNTRY)),则可以跳过ctryfctr的创建,并将行调用更改为lines(..., col=x$COUNTRY[1])

df$ctryfctr <- factor(df$COUNTRY)
plot(NA, xlim=range(df$YEAR), ylim=range(df$METRIC))
for (x in split(df, df$COUNTRY)) lines(x$YEAR, x$METRIC, col=x$ctryfctr[1])

sample per-country plot

答案 1 :(得分:0)

由于您似乎混淆了一些概念,所以我认为稍微澄清一下会有所帮助。

R的基本绘图软件包非常适合在没有先验知识的情况下快速草绘,但是使用ggplot2软件包可以更轻松地定义更复杂的绘图。您可以使用install.packages("ggplot2")安装它。使用ggplot2,您可以按照已经尝试过的方式以及r2evans指出的方式对行进行分组。

library(ggplot2) ggplot(df) + geom_line(aes(YEAR, METRIC, group=COUNTRY, color=COUNTRY))

因此,您告诉ggplot您正在使用df作为数据。您可以在geom_line内为aes()定义x和y轴。使用group=定义分组变量,使用color=定义每行使用不同的颜色。

希望您和R和ggplot2在一起愉快!