在一个图中绘制2个数据帧时的图例

时间:2013-02-14 16:58:10

标签: r plot ggplot2

我完全按照我的意愿制作了positive valuesnegative values,包括传奇。我现在将这些放在一个绘图中以创建单个绘图(我没有足够的点来链接到此图像)。我很满意这个 - 除了传说。图例按字母顺序排序,这不是我的首选顺序(与从上到下的颜色图层的顺序相同)。我尝试了不同的尝试手动设置图例的方法,但到目前为止我找到的所有方法都可以在绘制单个数据框时起作用,而不是像我一样。

似乎使用scale_colour_manual不会影响这种类型的情节,还有另一种方法吗?

下面是一个非常简单的工作示例,它也提供了与上述相同的行为。

data1 = data.frame(x = seq(0,20), y =    c(1,4,-5,-9,-4,0,3,6,-4,3,-2,-5,8,2,1,6,7,-9,8,-4,0))
data2 = data.frame(x = seq(0,20), y = seq(0,20))

q = ggplot(NULL, aes(x = x, y = y))
q = q + geom_line(data = data1)
q = q + geom_line(data = data2)

谢谢, 简


感谢您的回复,但我仍然没有得到我想要的图表。这是我到目前为止最近的一个链接positive and negative values - legend not as required。对于这个图,我使用了两个独立的数据框,因为我使用了不同的geom_areageom_line位置;对于我正在使用的情节的积极部分:

geom_area(data = prod.data, position = "identity", alpha = 0.8)
geom_line(data = prod.data, position = "identity")

对于我正在使用的情节的负面部分:

geom_area(data = cons.data, position = "stack", alpha = 0.8)
geom_line(data = cons.data, position = "stack")

然而,正如原始问题中所讨论的,我似乎无法控制传奇的顺序。我尝试组合数据框并设置因子的顺序,我在这里使用:

geom_area(position = "stack", alpha = 0.8)
geom_line(position = "stack")

我可以控制传奇顺序,但实际的情节不是我想要的。这是图positive and negative values - graph not as required

我正在进行量子力学闪回:-)所以我们非常感谢任何进一步的帮助。

1 个答案:

答案 0 :(得分:1)

通常,ggplot在将数据合并到一个数据框中时效果最佳。你提供的例子有点令人困惑 - 因为写的没有传说,并且不清楚你想要的传奇是什么。我的方法是组合数据框:

data1$group <- 1
data2$group <- 2
data3 <- rbind(data1, data2)
data3$group  <- factor(data3$group)
q <- ggplot(data3, aes(x = x, y = y, group = group, color = group))
    + geom_line()

然后,您可以使用任何标准方式订购图例。不太自动,但通常优于普通图例,您可以使用新的data.framegeom_text来手动标记每一行。

默认情况下,图例将按因子的顺序排序,因此要重新排序图例,您应该使用factor手动订购因子

data3$group <- reorder(data3$group, levels = c(2, 1), ordered = TRUE)

或使用reorder和函数(例如sort()rev(sort()),如果您想要反向alpha顺序)。如果您想要按reordermean y值排序因子,也可以将max与不同列的函数一起使用。