这是什么类型的图表?它可以使用ggplot2创建吗?

时间:2017-11-27 21:34:55

标签: r plot ggplot2 graph

我有这张图表,我试图复制。它有两个连续变量用于X& Y轴,并用线表示这两个变量之间的关系。

我的问题分为两部分:

  • 首先,这种类型的图表叫什么?这是不寻常的,因为点之间的线由第三个变量(年份)决定,而不是它们在X轴上的位置。

  • 第二,有谁知道这是否可以通过ggplot实现?到目前为止,我创建了一个类似于上面的图表但没有连接点的线。这段代码 ggplot(data, aes(x = Weekly_Hours_Per_Person, y = GDP_Per_Hour)) + geom_point()获得了以下输出: enter image description here 但是如何在几年内获得这条线?

任何一点的任何帮助将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:6)

使用libraray(ggplot2) ggplot(data, aes(x = Weekly_Hours_Per_Person, y = GDP_Per_Hour)) + geom_point() + geom_path() ,即

id

答案 1 :(得分:4)

扩展原始问题。这是一个路径图,正如here所述:

  

“geom_path()按照它们在数据中出现的顺序连接观察结果.geom_line()按照x轴上的变量顺序连接它们。”

作为原始问题的扩展,您可以标记线弯曲的选定点。以下是可重现数据的示例:

set.seed(123)
df <- data.frame(year = 1960:2006,
           Weekly_Hours_Per_Person = c(2:10, 9:0, 1:10, 9:1, 2:10),
           GDP_Per_Hour = 1:47 + rnorm(n = 47, mean = 0))

# Only label selected years
df_label <- filter(df, year %in% c(1960, 1968, 1978, 1988, 1997, 2006))

并使用ggrepel包来偏移顶点上的标签。

library(ggrepel)

ggplot(df, aes(Weekly_Hours_Per_Person, GDP_Per_Hour)) +
  geom_path() +
  geom_point(data = df_label) +
  geom_text_repel(data = df_label, aes(label = year)) +
  scale_x_continuous(limits = c(-2, 12))
))

enter image description here