修改ggplot2中的图例

时间:2013-05-23 15:59:46

标签: r ggplot2 legend

大家下午好, 我有一个关于ggplot2的问题。

以下是我的问题的简化版本 我有一个图形,有四行,每行有一个颜色。

我的代码是:

 library(ggplot2)
 df=data.frame(x=1:20,
              y=rep(1:5,4),
              ind=c(rep(1,5),rep(2,5),rep(3,5),rep(4,5))
)

p=ggplot(data=df, aes(x=x,y=y,group=ind, colour=factor(ind))) +
  geom_line() +
  scale_colour_manual(name="",
                      values=c("blue4","green4","blue3","green3"), 
                      labels=c("type1","type1","type2","type2"), 
                      breaks=c("1","3","2","4"))

然而蓝线和绿线代表相同的特征,所以我想要一个只有两个盒子而不是四个盒子的传奇:一个指蓝色线条,另一个指向绿色线条。 以下代码显示了一个图形,其中包含我想要的图例类型:

plot(x=1:5, y=1:5, col="blue4", type="l", xlim=c(0,20))
lines(x=6:10, y=1:5, col="green4")
lines(x=11:15, y=1:5, col="blue3")
lines(x=16:20, y=1:5, col="green3")
legend("topright", legend=c("type1","type2"), col=c("blue3","green3"), lty=c(1,1))

你可能会说我应该以经典的方式(即不使用ggplot2)来做,但是我的真实案例在技术上更先进,因此我真的需要使用ggplot2(为了更容易控制其他图形参数)。 / p>

如果你看不到我的图片,我很抱歉。我打算发布它们但我不能因为没有足够的声望点 如果你能帮助我,请提前致谢。 MAEL

1 个答案:

答案 0 :(得分:0)

您可以使用两个级别(而不是四个级别)创建一个新因子,并将此因子用作图中colour参数的参数。

新系数ind2的标签为type1,其中ind为奇数,type2其中ind为偶数。

df$ind2 <- factor(!df$ind %% 2, labels = c("type1", "type2"))

ggplot(data = df, aes(x = x, y = y, group = ind, colour = ind2)) +
  geom_line() +
  scale_colour_manual(values=c("blue4", "green4"))

enter image description here