大家下午好, 我有一个关于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
答案 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"))