R ggplot 2 легенды границы вопроса - PullRequest
3 голосов
/ 03 апреля 2020

Я знаю, что это незначительно, но это для публикации и сводит меня с ума. Нижняя часть коробки P0688 примерно на 1-2 пикселя тоньше остальных. Я не хочу делать границы более толстыми, потому что тогда они не соответствуют остальной части гистограммы.

  plot<- ggplot(tukey_letters, aes(x = variable, y = value.x, 
        fill = L1)) + 
      theme(panel.background=element_rect(fill="#ffffff", color 
      ="#000000"), panel.grid.major=element_blank(), 
    panel.grid.minor=element_blank()) +
      geom_bar(stat = "identity", position=position_dodge(),color="black")+ scale_fill_manual(values=c("#FFFFFF", "#999999"))+ guides(fill=guide_legend(title="Genotype", title.position = "left")) +
  geom_errorbar(aes(ymin=value.x-se, ymax=value.x+se), width=.1,size=.5,position=position_dodge(0.9), color="black")+
  theme(
    axis.title = element_text(size =12, face="bold"),
    axis.text = element_text(angle=30, vjust=0.5,hjust=0.6,size=8,face="bold", color="#000000"),
    axis.ticks = element_line(size = rel(1)),
    axis.ticks.length = unit(0.3, "cm"),
    legend.position = c(0.2, 0.9)
  )+
  labs(
    x="Treatment",
    y="ARI1"
  )+
  #facet_wrap(~L1)+ ## You can use face_wrap function only if you need it+
  geom_text(data =tukey_letters,
            aes(x=xpos, y=ymax+offset_asterisk,label=groups), 
           size = 4,position=position_dodge(0.9) , vjust=-0.5
 )

Bottom of P0688 box

It's not even that noticeable at a smaller size. Still bothers me.

Заранее спасибо. Дайте мне знать, если что-то еще понадобится, чтобы решить эту проблему.

1 Ответ

0 голосов
/ 04 апреля 2020

Это происходит из-за поведения клавиш легенды. Это известная проблема, смотрите эту ветку GitHub https://github.com/tidyverse/ggplot2/issues/2844. На этом сайте также предлагается исправление, позвольте мне показать это здесь.

library(tidyverse)

ggplot(mtcars) +
  aes(fill=factor(cyl), x=cyl) +
  geom_bar(color = 'black') +
  guides(fill=guide_legend(title.position = "left")) +
  theme(legend.key = element_rect(color="white") +
        legend.position = c(0.2, 0.7))

Увеличено, легенда теперь будет выглядеть так: enter image description here

Теперь давайте сделаем исправить.

  draw_key_polygon3 <- function(data, params, size) {
  lwd <- min(data$size, min(size) / 4)

  grid::rectGrob(
    width = grid::unit(0.7, "npc"),
    height = grid::unit(0.7, "npc"),
    gp = grid::gpar(
      col = data$colour,
      fill = alpha(data$fill, data$alpha),
      lty = data$linetype,
      lwd = lwd * .pt,
      linejoin = "mitre"
    ))
}

GeomBar$draw_key = draw_key_polygon3

ggplot(mtcars) +
  aes(fill=factor(cyl), x=cyl) +
  geom_bar(color = 'black') +
  guides(fill=guide_legend(title.position = "left")) +
  theme(legend.key = element_rect(color="white", fill = 'white'),
        legend.position = c(0.2, 0.7))

enter image description here

Но что на самом деле здесь происходит ? Посмотрим!

ggplot(mtcars) +
  aes(fill=factor(cyl), x=cyl) +
  geom_bar(color = 'black') +
  guides(fill=guide_legend(title.position = "left")) +
  theme(legend.position = c(0.2, 0.7),
        legend.key = element_rect(color="black", fill = 'white')) 

Легенда имеет две границы! Один для символа легенды, другой для ключа. Вы рисуете границу для ключа с вызовом theme, и граница вокруг глифа создается с вашим цветным аргументом в geom_bar

enter image description here

Создано в 2020-04-04 пакетом Представ (v0.3.0)

...