在ggplot2中生成图例

时间:2016-11-13 11:57:15

标签: r ggplot2 legend

我试图为我的ggplot生成一个图例,我想在2.5个月的时间范围内用11个数据点说明五个不同的行。我可以生成图形,但它不能使图形与线条的颜色和名称相比较。我尝试了不同的命令,即scale_colour_manual,scale_fill_discrete,opts,guides,......但是没有任何作用。我不知道出了什么问题。可以请任何人帮助我吗?

以下是定义数据框的命令。

Spaß <- read.csv(file="Spaßfaktor.csv", header = TRUE, sep = ";", dec=",")

SVS <- ts(Spaß$Sehr.Viel.Spaß, deltat=1/52)
VS <- ts(Viel.Spaß, deltat=1/52)
N <- ts(Normal, deltat=1/52)
WS <- ts(wenig.Spaß, deltat=1/52)
SWS <- ts(Sehr.wenig.Spaß, deltat=1/52)

ZP <- strptime(Spaß$Zeitpunkt, format="%d.%m.%Y")
ZP

df<-data.frame(ZP, SVS, VS, N, WS, SWS)

为了生成图形,我使用了例如以下命令(包括comman scale_colour_manual)。包含此命令,R不会创建图形。如果你从ggplot命令中删除它,图表会显示:

       SP<-ggplot(df, aes(Zeit) ) +
      geom_line(aes(y=SVS), colour="green", lwd=1.3) +  # first layer
      geom_line(aes(y=VS), colour="blue", lwd=1.3) +
      geom_line(aes(y=N), colour="black", lwd=1.3) +  
      geom_line(aes(y=WS), colour="orange", lwd=1.3) +
      geom_line(aes(y=SWS), colour="red", lwd=1.3) +
       scale_colour_manual("", 
                breaks = c("Sehr viel Spaß", "Viel Spaß", "Normal", "Wenig Spaß", "Sehr wenig Spaß"),
                          values = c("green", "blue", "black", "Orange", "Red"))+
      xlab("Zeit") +
      scale_y_continuous("Anzahl in Prozent", limits = c(0,65)) + 
      labs(title="Häufigkeit der Auspräungen des Faktors Spaß")

SP

我还尝试了命令scale_fill_discrete或指南,将其添加到SP。这意味着即:SP + guides(fill = guide_legend(reverse=TRUE))SP + scale_fill_discrete(name="Legende", labels=c("Sehr viel Spaß", "Viel Spaß", "Normal", "Wenig Spaß", "Sehr wenig Spaß"))

可以请任何人帮助我吗?

我自己通过调查生成的数据。它们显示在下面:

Varaible       Spaß    Beurteilung
sehr viel Spaß/Sehr gut 4   5
Viel Spaß/Gut     8     6
Normal/Neutral    10    9
wenig Spaß/schlecht    3    4
sehr wenig Spaß/Sehr schlecht      3    4

1 个答案:

答案 0 :(得分:0)

要扩展Heroka的评论,您需要使用tidyrreshape2将数据从宽格式转换为长格式。每个包的插图都深入探讨了这一点。然后,您可以在aes的{​​{1}}来电中设置颜色,并使用geom_line来适当地设置中断,颜色和标签。

scale_color_manual

enter image description here