Як я можу змінити назву легенди в ggplot2? [зачинено]


58

У мене є сюжет, який я створюю в ggplot2, щоб узагальнити дані, що складаються з 2-х 4 х 3 даних з ядрами. Мені вдалося зробити панелі для дворівневої змінної за допомогою facet_grid(. ~ Age)та встановити осі x та y за допомогою aes(x=4leveledVariable, y=DV). Я раніше aes(group=3leveledvariable, lty=3leveledvariable)створював сюжет. Це дає мені візуалізацію, панель якої є 2-рівневою змінною, при цьому вісь X представляє 4-х змінну змінну та різні лінії, нанесені на панелі для 3-рівневої змінної. Але ключ для 3-рівневої змінної має заголовок із назвою змінної 3-рівня, і я хочу, щоб це був заголовок, який має в ньому пробіл символів. Як я можу перейменувати назву легенди?

Те, що я намагався, схоже, не працює (де abpмій об’єкт ggplot2):

 abp <- abp + opts(legend.title="Town Name")
 abp <- abp + scale_fill_continuous("Town Name")
 abp <- abp + opts(group="Town Name")
 abp <- abp + opts(legend.title="Town Name")

Приклад даних:

ex.data <- data.frame(DV=rnorm(2*4*3), V2=rep(1:2,each=4*3), V4=rep(1:4,each=3), V3=1:3)

2
@drknexus - якщо ви можете поділитися своїми даними, це було б корисно або вказати на аналогічний набір даних у R, який має ту ж форму, що і ваші дані.
Чейз

1
Тут усі здаються дуже обізнаними, але я знаю, що стосовно ggplot-питань, я вважаю їхню групу Google надзвичайно корисною. groups.google.com/group/ggplot2
Dason

Окрім добре відомої та чудової документації на сторінці Хедлі, не так відома посилання на Git Hub справді допомагає у таких питаннях.
hans0l0

Крім того, theme_get()надає вам таку саму посилання на консолі.
Брендон Бертелсен

1
У відповідь на кілька прапорів із проханням про міграцію SO, це фактично неможливо; див. чому на SO.meta: meta.stackexchange.com/q/8004/150510 , meta.stackexchange.com/q/151890/150510 .
чл

Відповіді:


25

Ще один варіант - використовувати

p + labs(aesthetic='custom text')     

Наприклад, приклад Чейза виглядатиме так:

library(ggplot2)

ex.data <- data.frame(DV=rnorm(2*4*3),V2=rep(1:2,each=4*3),V4=rep(1:4,each=3),V3=1:3)
p <- qplot(V4, DV, data=ex.data, geom="line", group=V3, linetype=factor(V3)) + facet_grid(. ~ V2)
p + labs(linetype='custom title')

і отримати цифру: введіть тут опис зображення


Сьогодні я схильний вважати за краще використовувати лабораторії () для зміни міток над зазначенням їх у масштабі / осі за шкалою / осі.
russellpierce

38

Ви можете змінити назву легенди, змінивши масштаб цієї легенди. Ось приклад використання набору даних CO2

library(ggplot2)

p <- qplot(conc, uptake, data = CO2, colour = Type) + scale_colour_discrete(name = "Fancy Title")
p <- p + facet_grid(. ~ Treatment)
p 

Редагувати:

Використовуючи приклади даних зверху, ось робоче рішення. Я думаю, це імітує сюжет, який @drknexus намагається створити. Як зауваження, якщо хтось може пояснити, чому ми маємо трактувати V3 як фактор, щоб він відобразився до легенди, я би вдячний.

p <- qplot(V4, DV, data = ex.data, geom = "line", group = V3, lty = factor(V3)) 
p <- p + scale_linetype_discrete(name = "Fancy Title") + facet_grid(. ~ V2)
p 

alt текст


Я думаю, що мені не вистачає такої функції, як scale_color_discrete, яка прив'язується до специфікації "group" або "lty" в ggplot (data = ex.daata, aes (x = V4, y = DV, group = V3, lty = V3 ))
russellpierce

1
Ах, я знайшов це: scale_linetype_discrete (name = "bob")
russellpierce

@Chase: Відредагуйте за допомогою розрізного біта scale_linetype_discrete, і я прийму вашу відповідь.
russellpierce

1
@drknexus - проблема з цим є в моєму робочому прикладі, відповідна команда, scale_colour_discrete()і код, з яким ви працюєте, очевидно, трохи інший. Я не знаю, що це за код ...
Чейз

3
@Chase Re: "чому ми маємо трактувати V3 як фактор" scale_linetype_discreteочікує змінну з дискретними значеннями (фактор або символ, від plyr::is.discrete), ознайомтеся з кодом src на Github, j.mp/ejaRRT . Приємна відповідь (+1).
chl
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.