【发布时间】:2018-10-24 20:26:05
【问题描述】:
我对 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")
我得到了一条不间断的线路,从“美国”的 4 次观察开始,然后回到下一个国家(“加拿大”)的第一年。
谁能解释为什么会这样? 是否可以仅使用预建函数创建此图?
提前感谢您的帮助。
【问题讨论】:
-
base R
plot不像ggplot2那样工作:说col=df$COUNTRY并不意味着它将对线条进行分组,分离端点并直观地应用颜色。我认为您的直接选择(1)制作一个单一的基础图,然后将每个国家/地区的数据作为单独的电话添加到lines; (2) 使用segments并在每个国家/地区之间放置NAs(通常是脆弱且工作量太大);或 (3) 切换到ggplot2或lattice,这样分组/分面更自然一些。 -
library(ggplot2); ggplot(df) + geom_line(aes(YEAR, METRIC, color=COUNTRY))之类的内容更有可能是您正在寻找的内容,并且一旦您开始将您的思维过程从 base-R 迁移到图形语法,就相对容易阅读。跨度> -
如果您继续使用 base-R,请意识到
lines(因此plot(..., type=";"))只会使用第一种颜色,除非type="h"(这不是您在此处尝试做的) .