Как изменить текст метки в r? - PullRequest
0 голосов
/ 09 мая 2020

Я изучаю r, и у меня проблемы с установкой текста метки (желаемый текст) и настройкой размера и жирного шрифта для заголовка легенды. Я пытался найти некоторую помощь из других источников в stackoverflow, и для изменения текста метки требуется поставить scale_color_hue, но я понятия не имею, куда его поместить. Вот мой фрейм данных:

dat <- data.frame(
  time = factor(c("Breakfast","Breakfast","Breakfast","Breakfast","Breakfast","Lunch","Lunch","Lunch","Lunch","Lunch","Lunch","Dinner","Dinner","Dinner","Dinner","Dinner","Dinner","Dinner"), levels=c("Breakfast","Lunch","Dinner")),
  class = c("a","a","b","b","c","a","b","b","c","c","c","a","a","b","b","b","c","c"))

Вот мой код для внесения изменений:

library(dplyr)
library(ggplot2)
dat %>% 
  filter(time %in% c("Breakfast", "Dinner")) %>%
  droplevels %>%
  count(time, class) %>% 
  group_by(time) %>% 
  mutate(prop = n/sum(n)) %>%
  ggplot(aes(x = fct_reorder(class,prop), y = prop, fill = time, label = scales::percent(prop))) +
  geom_col(position = 'dodge') +
  geom_text(position = position_dodge(width = 0.9), vjust = 0.5, size = 3) + 
  scale_y_continuous(labels = scales::percent)+
  coord_flip() +
  theme(legend.position="top", legend.direction="vertical")+
  guides(fill = guide_legend(title = "Time",nrow = 1))+
  coord_flip()

Для заголовка Time Я могу изменить его на желаемый текст, но я не знать, как установить размер шрифта, а также жирный шрифт. Для текста метки, такого как Breakfast и Dinner, я не могу установить желаемый текст.

Любая помощь для этого была бы очень признательна. Спасибо!

Ответы [ 2 ]

1 голос
/ 09 мая 2020

Для заголовка легенды, выделенного жирным шрифтом, добавьте в тему face = "bold". Для меток легенды используйте scale_fill_discrete(labels=...).

Итак,

...
  theme(..., legend.title=element_text(hjust = 0.5, face="bold", size=14)) +
  scale_fill_discrete(labels=c("Label 1","Label 2"))
1 голос
/ 09 мая 2020

У вас есть несколько вариантов в зависимости от того, чего вы хотите достичь.

Этот ответ касается только вашего вопроса о названии легенды.

Типичный способ включения заголовка легенды - это присвоение имени aestheti c, используемого для группировки клавиш легенды в функции ggplot::labs, например, labs(fill = "Time"). Другой способ, как указал @Edward, использует theme


dat <- data.frame(
  time = factor(c("Breakfast","Breakfast","Breakfast","Breakfast","Breakfast","Lunch","Lunch","Lunch","Lunch","Lunch","Lunch","Dinner","Dinner","Dinner","Dinner","Dinner","Dinner","Dinner"), levels=c("Breakfast","Lunch","Dinner")),
  class = c("a","a","b","b","c","a","b","b","c","c","c","a","a","b","b","b","c","c"))


library(dplyr)
library(ggplot2)
library(forcats)


g0 <- dat %>% 
  filter(time %in% c("Breakfast", "Dinner")) %>%
  droplevels %>%
  count(time, class) %>% 
  group_by(time) %>% 
  mutate(prop = n/sum(n)) %>%
  ggplot(aes(x = fct_reorder(class, prop), y = prop, fill = time, label = scales::percent(prop))) +
  geom_col(position = 'dodge') +
  geom_text(position = position_dodge(width = 0.9), vjust = 0.5, size = 3) + 
  scale_y_continuous(labels = scales::percent)+
  coord_flip()

g1 <- g0+
  labs(fill = "Time")+
  theme(legend.position = "top",
        legend.direction = "vertical",
        legend.title = element_text(hjust = 0.5))

g1


g2 <- g0+
  labs(fill = "Time")+
  theme(legend.position = "top",
        legend.direction = "vertical",
        legend.title = element_text(hjust = 0.5, face = "bold", size = 20))
g2

g1, который дает вам:

enter image description here

И g2 дает вам:

enter image description here

...