2016-07-25 3 views
2

Мне нужно построить переменную и подмножество этой переменной в один граф, и я борюсь с размещением легенды. Смотрите следующий MWE:Добавить легенду при использовании подмножества

library(ggplot2) 

ggplot(data = cars, aes(x = speed)) + 
    geom_line(stat = "density", colour = "red", size = 1) + 
    geom_area(stat = "density", fill = "red", alpha = 0.3) + 
    geom_line(data = subset(cars, dist > 50), stat = "density", colour = "blue", size = 1) + 
    geom_area(data = subset(cars, dist > 50), stat = "density", fill = "blue", alpha = 0.3) 

enter image description here

Пожалуйста, обратите внимание, что это не вариант incluce fill = dist > 50 в эстетике для этого было бы разделить данные на две части. Но первые geom_line и geom_area должны включать не только эти значения с dist <= 0, но и все значения из данных.

Поэтому я указываю цвета вручную в geom. Но как я могу добавить легенду? Я предпочел бы включать только два geom_line.

Я пробовал с scale_color_manual, но не приносил его на работу (если это так, то в любом случае?).

Любые предложения?

EDIT: Я изменил код, чтобы показать рабочий минимальный пример.

+2

http://stackoverflow.com/questions/5963269/how-to-make-a-great -r-воспроизводимый-пример – shayaa

ответ

2

Лучше подготовить данные за пределами ggplot см пример:

# data prep 
plotDat <- rbind(
    data.frame(Group = "Full Data", cars), 
    data.frame(Group = "Subset Data", cars[cars$speed < 15, ])) 

library(ggplot2) 
ggplot(plotDat, aes(x = speed, col = Group, fill = Group)) + 
    geom_density(alpha = 0.3) 

enter image description here

+1

Я только что понял, что это не ответ на мой вопрос, так как сюжет из вашего предложения складывает графики плотности. Таким образом, это совершенно другой график. Я добавил 'position =" dodge "' to 'geom_area', чтобы получить график, который я искал. Спасибо за вашу идею. –

+0

@der_grund правильно, используется неправильная функция графика, см. Редактирование. – zx8754

+0

Это еще лучше по сравнению с моим (отредактированным) комментарием. –

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