【问题标题】:plot multiple line segments on one graph using R使用 R 在一张图上绘制多条线段
【发布时间】:2012-02-01 15:08:50
【问题描述】:

我怎样才能复制这种风格的图表,在一个图表上有多个图,最好附上如下图例。

我尝试过“facet”的概念,但 ggplot2 和 trellis:xyplot 都将 facets 视为单独的面板,而不是重叠的图。

我可以使用普通的 Jane plot() 和 line() 来做到这一点。但我使用的是 ggplot2,并且希望在该包中的一个绘图上获得多条线。

这是一些长格式的示例数据(使用名为“Graphclick”的漂亮应用从图中捕获)

comp <- read.table(pipe("pbpaste"), header=T, sep=',')

company, year, sales
Apple,1975.003,17298.457
Apple,1977.302,16784.502
Apple,1978.314,17298.457
Apple,1980.246,20730.098
Apple,1981.533,27608.426
Apple,1984.293,40862.852
Apple,1986.408,50468.617
Apple,1987.328,48236.188
Apple,1988.892,35676.547
Apple,1989.904,34616.582
Apple,1991.192,44732.742
Apple,1992.387,44732.742
Apple,1993.399,39055.324
Apple,1995.791,37894.922
Apple,1996.895,39648.746
Apple,1998.274,52804.367
Apple,1999.378,61399.512
Apple,2001.770,2.350e5
Apple,2005.265,7.735e5
Toshiba,1999.378,86856.6
Toshiba,2001.862,1.192e5
Toshiba,2004.069,1.495e5
Toshiba,2004.069,1.495e5
IBM,1975.003,22019.092
IBM,1975.830,27195.193
IBM,1976.934,30682.320
IBM,1978.130,31148.527
IBM,1980.430,35676.547
IBM,1981.625,35676.547
IBM,1983.005,39648.746
IBM,1985.305,40862.852
IBM,1986.408,46102.508
IBM,1987.512,64241.156
IBM,1989.996,75832.898
IBM,1991.100,84276.039
IBM,1992.295,85556.641
IBM,1993.307,79342.539
IBM,1994.779,79342.539
IBM,1995.791,84276.039
IBM,1996.895,95082.484
IBM,1996.895,95082.484
Commodore,1975.003,33588.051
Commodore,1975.830,34616.582
Commodore,1977.118,25219.982
Commodore,1978.130,23388.229
Commodore,1979.326,25992.234
Commodore,1980.521,21689.514
Commodore,1981.717,25219.982
Commodore,1984.201,6999.029
Commodore,1985.213,1670.460
Commodore,1986.408,1458.447


(来源:asymco.com

【问题讨论】:

  • 抱歉,我不明白有什么问题。为什么要使用构面?我在您尝试复制的图表中看不到任何方面或面板。示例代码数据会很有用
  • ggplot2 创建构面的唯一原因是您明确告诉它这样做。您可能只想在代码中省略对方面的任何引用,并使用geom_linegroup 美学设置为“计算机制造商”变量。但更一般地说,我不明白如果不发布您的数据和代码,您希望如何获得体面的帮助。
  • 数据已添加。可以使用 group 审美和 geom_Line 获得多个情节。谢谢! ggplot(data=comp, aes(year, sales, group = company)) + geom_line() 现在只需要记录 Y 轴、每个图的颜色以及图上的标签
  • 嗨@tim,你能分享剩下的数据吗?或者,提供一个链接到哪里可以找到它?谢谢!
  • 对不起@user3062148,我不记得样本来自哪里

标签: r plot ggplot2


【解决方案1】:

如果您正在寻找最大的控制,您可以只使用低级的绘图和线条命令。使用“plot”生成第一个图形(带有标题、xlimits 和 ylimits),然后使用“lines”向该图形添加线条。

plot(0,type="n", xlim=c(0,10), ylim=c(0,10), xlab="X Label", ylab="Y Label", main="Title")

然后使用lines命令添加行:

lines(1:10, 1:10, type="l", lty=2)
lines(2:4, 10:8, col=2, type="l")
lines(6:9, c(5,6,5,6), col=3, type="l")

您可以使用“par”帮助文件(“?par”)中列出的所有参数来微调外观

【讨论】:

  • 谢谢杰夫!我有一个这样的解决方案与情节......也许这是最简单和最好的方式进行:-)
【解决方案2】:

所以,在 ggplot2 中,此代码有效

qplot(year, sales, data=comp, colour=as.factor(company), group= company, geom="path", log="y")

现在唯一剩下的就是将 Y 轴上的值格式化为数字(不是 sci 表示法),并且标签位于图外的图例中,而不是在图上……欢迎提出最终建议。

这最终比 plot() + lines() 容易得多,因为这需要支持代码来获取范围、迭代组级别等。

【讨论】:

  • 如果这是评论,我建议您将其附加到您的问题中(并删除此答案)。如果是(确定的)答案,您可以通过单击答案分数下方的复选标记来接受它。
猜你喜欢
  • 2012-10-30
  • 1970-01-01
  • 1970-01-01
  • 2012-03-21
  • 2013-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多