2016-11-13 2 views
-1

Я попытался создать легенду для моего ggplot, где я хочу проиллюстрировать пять разных строк за временной интервал в 2,5 месяца с 11 точками данных. Я могу сгенерировать график, но он не работает, чтобы получить легенду по сравнению с цветами и именами строк. Я пробовал разные команды, т. Е. Scale_colour_manual, scale_fill_discrete, opts, guide, ... но ничего не работает. Я не знаю, что случилось. Может ли кто-нибудь мне помочь?Создание легенды в ggplot2

Вот команды для определения кадра данных.

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, график shwos вверх:

 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 + 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 
+0

Я думаю, что вам нужно сделать какие-то данные-перепрофилирование. Как правило, в ggplot, если вам нужно повторять команды типа «geom_line», вы делаете это неправильно. – Heroka

ответ

0

Чтобы расширить комментарий Heroka в вы хотите использовать tidyr или reshape2 для преобразования данных из широкого формата в длинном формате. Виньетки для каждой упаковки охватывают эту глубину. Затем вы установили цвет в своем aes звоните в geom_line и воспользуетесь scale_color_manual, чтобы установить перерывы, цвета и метки соответствующим образом.

library(tidyr) 
library(ggplot2) 

# using your input dataset provided in the separate answer 
df <- gather(df, variable, value, -Zeitpunkt) 

ggplot(df, aes(x = ZP)) + 
    geom_line(aes(y = value, colour = variable, group = variable), lwd = 1.3) + 
    scale_colour_manual(labels = c("Sehr viel Spaß", "Viel Spaß", "Normal", "Wenig Spaß", "Sehr wenig Spaß"), 
         breaks = c("SVS","VS","N","WS","W"), 
         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ß") 

enter image description here

+0

Спасибо за помощь. Но команда не работает. Это просто возвращает мне ggplot с одной строкой. Но я хочу иметь 5 разных линий для 5 персонажей веселья. Возможно, проблема в том, что я разместил неверные данные. Простите за это! Я сделал еще один пост, если вы поможете мне снова. Благодаря! –

+0

Возникла проблема с сохранением цвета = зеленый, без набора групп и отсутствующей закрывающей скобки. Я исправил ошибки, и теперь он должен работать. –

+0

Эй, это работает! Большое спасибо!!! –

Смежные вопросы