У меня есть следующий график, как показано ниже. Он был создан с помощью этой команды:
library(ggplot2)
df <- data.frame(cond = factor(rep(c("A", "B"), each = 200)),
rating = c(rnorm(200), rnorm(200, mean=.8)))
ggplot(df, aes(x=rating, fill=cond)) +
geom_density(alpha = .3) +
xlab("NEW RATING TITLE") +
ylab("NEW DENSITY TITLE")
Теперь следующая вещь, которую я хочу сделать, - изменить название легенды от cond в НОВОЕ НАЗВАНИЕ ЛЕГЕНДЫ.
Итак, что я сделал, просто добавьте следующую строку, добавив конец вышеуказанного кода:
+labs(colour="NEW LEGEND TITLE")
Но это не сработает. Каков правильный способ сделать это?
Это должно работать:
p <- ggplot(df, aes(x=rating, fill=cond)) +
geom_density(alpha=.3) +
xlab("NEW RATING TITLE") +
ylab("NEW DENSITY TITLE")
p <- p + guides(fill=guide_legend(title="New Legend Title"))
(или альтернативно)
p + scale_fill_discrete(name = "New Legend Title")
p$labels$fill <- "New Legend Title"
Я не много вникал в это, но потому, что вы использовали fill = cond в ggplot(),
+ labs(color='NEW LEGEND TITLE')
возможно, не сработало. Однако он заменяет цвет на заполнять, он работает!
+ labs(fill='NEW LEGEND TITLE')
Это работало для меня в ggplot2_2.1.0
P.S. Я бы прокомментировал, но моей репутации stackoverflow недостаточно, чтобы комментировать.
Поскольку у вас две плотности, я думаю, вы можете захотеть установить свои собственные цвета с помощью scale_fill_manual
.
Если так вы можете сделать:
df <- data.frame(x=1:10,group=c(rep("a",5),rep("b",5)))
legend_title <- "OMG My Title"
ggplot(df, aes(x=x, fill=group)) + geom_density(alpha=.3) +
scale_fill_manual(legend_title,values=c("orange","red"))
Так как в вашем коде вы использовали ggplot(data, fill= cond)
для создания гистограммы, вам нужно добавить заголовок легенды, также используя "fill" в разделе метки, т.е. +labs(fill="Title name")
. Если вы использовали другой тип графика, где код был ggplot (data, color = cond), вы могли бы использовать +labs(colour= "Title Name")
. Таким образом, аргумент lab должен соответствовать аргументу aes.
Я использовал + guides(fill=guide_legend("my awesome title"))
, чтобы изменить заголовок легенды на графиках geom_bar, но он не работал для geom_point.
geom_point()
это работает для меня: guides(color=guide_legend("Type:"))
guides(color=guide_legend("Score Ranking:"))
Ни один из приведенных выше кодов не работает для меня.
Вот что я нашел и это сработало.
labs(color = "sale year")
Вы также можете указать пробел между заголовком и дисплеем, добавив \n
в конце.
labs(color = 'sale year\n")
Есть еще один очень простой ответ, который может работать для некоторых простых графиков.
Просто добавьте вызов guide_legend() в свой график.
ggplot(...) + ... + guide_legend(title="my awesome title")
Как показано в очень хороших документах ggplot.
Если это не сработает, вы можете более точно установить параметры вашего путеводителя с помощью вызова руководств:
ggplot(...) + ... + guides(fill=guide_legend("my awesome title"))
Вы также можете изменить форму/цвет/размер, указав эти параметры для вызова guides
.
qplot(…) + guides(color=guide_legend(title="sale year"))
Я использую facet_wrap в своем ggplot, и ни один из предложенных решений не работал у меня, кроме решения ArnaudA:
qplot(…) + guides(color=guide_legend(title="sale year"))
Многие люди тратят много времени на изменение меток, меток легенд, заголовков и названий оси, потому что они не знают, что в R можно загрузить таблицы с пробелами " "
. Однако вы можете сделать это, чтобы сэкономить время или уменьшить размер вашего кода, указав разделители при загрузке таблицы, которая, например, разделена вкладками (или любым другим разделителем, отличным от значения по умолчанию, или одним пробелом):
read.table(sep = '\t')
или используя параметры загрузки по умолчанию в формате csv:
read.csv()
Это означает, что вы можете напрямую сохранить имя "NEW LEGEND TITLE"
в качестве имени столбца (заголовка) в исходном файле данных, чтобы избежать указания нового заголовка легенды на каждом графике.
Вы также можете добавить одну строку (последняя строка):
ggplot(df, aes(x=rating, fill=cond)) +
geom_density(alpha = .3) +
xlab("NEW RATING TITLE") +
ylab("NEW DENSITY TITLE") +
labs(fill = "Your Title")
labs(fill="xyz")
должны делать