0

大家下午好,我有一个关于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(以便更容易控制其他图形参数)。

如果您看不到我的图形,我很抱歉。我想发布它们,但由于声誉点不足,我不能发布它们,如果您能帮助我,请提前感谢。梅尔

4

1 回答 1

0

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

新因子具有奇数和偶数的ind2标签。type1indtype2ind

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"))

在此处输入图像描述

于 2013-05-23T16:10:18.267 回答