【问题标题】:use ggplot2 to plot two lines with ribbons使用 ggplot2 用丝带绘制两条线
【发布时间】:2014-12-30 20:13:40
【问题描述】:

我有一个带有度量 v 和分类变量 t 的数据框。 我可以将它们绘制成这样的线条

set.seed(42)
v <- runif(20, min=0, max=100)
t <- sample( LETTERS[1:2], 20, replace=TRUE )

df <- data.frame(v,t)

qplot(1:length(v),v,data=df,geom="line",group=t,color=t)

我想在每一行周围添加丝带。可能具有不同的宽度(我将使用公式设置)和透明度。我试图用“ribbon”替换geom,但出现以下错误:

qplot(1:length(v),v,data=df,geom="ribbon",group=t,color=t)
Error: geom_ribbon requires the following missing aesthetics: ymin, ymax

如何在一张图表中同时绘制两条线和它们的条带?

【问题讨论】:

  • 功能区需要下限和上限,但您没有提供这些。你期待什么?

标签: r ggplot2 confidence-interval


【解决方案1】:

以下是添加功能区的方法。当然,您可以更改 yminymax 的公式以满足您的需要:

ggplot(df, aes(x=1:length(v), y=v, group=t, colour=t)) + 
  geom_ribbon(aes(ymin=v-0.1*v, ymax=v+0.1*v, fill=t), alpha=0.2) +
  geom_line()

【讨论】:

  • 我在想你会想要在功能区之后的行,以便在 alpha=1 的情况下它不会被功能区“覆盖”。
  • 这只是我的代码中的一个错误——我把+ 放错了地方。现已修复。
  • 确实,如果线条和色带填充的颜色和 alpha 相同,那么无论绘图顺序如何,您都不会看到线条。但是,您可以为线条和色带填充设置不同的颜色和/或 alpha 值以解决此问题。无论哪种方式,如果您希望线“在顶部”,您需要在功能区之后绘制它。
  • 谢谢!这正是我需要的!
猜你喜欢
  • 2018-02-22
  • 2015-06-16
  • 1970-01-01
  • 2013-02-07
  • 1970-01-01
  • 2014-06-21
  • 1970-01-01
  • 2011-11-21
  • 2017-09-27
相关资源
最近更新 更多