2015-10-13 3 views
0

Я пытаюсь добавить ярлык для hline, который я покажу на своем сюжете. Я могу отобразить hline на графике, но я не могу изменить заголовок, и он отображается как пустое пространство. Это данные:hline legend не работает ggplot2

library (ggplot2) 
library(ggthemes) 
library(scales) 
library(grid) 

toy<-data.frame(naics_3=c('sector 35','sector 34','sector 33', 
         'sector 32','sector 31','sector 30'), 
       contrb_08_14=c(24.91,29.91,13.54,4.4,14.03,-0.37), 
       real_exports14=c(6787,4399,3351,2690,1956,1407)) 

И это код:

p<-ggplot(toy, aes(x = naics_3, y =contrb_08_14)) + 
geom_point(data=toy, aes(size =(real_exports14)), 
      colour="#1947A3", 
      alpha=0.9)+ 
    scale_size(breaks = c(50,200,800,3200,6000), 
      range = c(5,30), 
      labels = c('50 million', 
         '100 million', 
         '800 million', 
         '3 billion', 
         '6 billion'))+ 
    geom_hline(aes(yintercept = mean(contrb_08_14), 
       fill='average', 
       linetype='dashed'), 
      color = "#00004C", 
      linetype='dashed', 
      data=bubble, 
      #show_guide = T, 
      alpha=0.4)+ 
    scale_linetype(name = "Ave")+ 
    guides(linetype = guide_legend(override.aes = list(colour = "red", 
                fill='purple')))+ 
    guides(size=guide_legend(override.aes = list(size = c(4, 
                 8, 
                 15, 
                 18, 
                 24)), 
          title = "Exports 2014", 
          title.hjust = 0.5, 
          keywidth=0.3))+ 
    coord_flip()+ 
    theme(plot.margin=unit(c(0.0,0.0,0.0,0.0),"mm"))+ 
    theme_classic()+ 
    scale_y_continuous(limits=c(-0.05, 0.35), 
        breaks=c(-0.05, 0, 0.05, 0.1, 0.15, 
           0.2, 0.25, 0.3, 0.35), 
        labels = percent)+ 
    theme(panel.grid.major = element_blank(), 
     panel.grid.minor = element_blank(), 
     #plot.background = element_rect(fill = '#F2F2F2'), 
     #legend.background = element_rect(fill="#F2F2F2"), 
     panel.background = element_blank(), 
     panel.border = element_blank(), 
     axis.line = element_line(color = 'black'))+ 
    theme(axis.text.x=element_text(size = 9), 
     axis.text.y=element_text(size = 7))+ 
    theme(legend.key = element_rect(colour = "white", 
            fill = "white", 
            size=0.5), 
     legend.key.size= unit(0.1,"cm"), 
     legend.text= element_text(size = 8), 
     legend.title= element_text(size = 8.5))+ 
    theme(axis.title.x=element_blank(), 
     axis.title.y=element_blank()) 
print(p) 

Это участок производства (со всем набором данных), он отображает только название «средний», который я не могу изменить. Я хотел бы показать название (с другим именем) и показать ту же пунктирную линию, которая отображается на графике в ключе легенды This is the plot

Спасибо.

+2

Вы должны попытаться обеспечить ** минимальное ** [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r -воспроизводимый пример) (тот, который не требует загрузки файла данных откуда-то). Удалите весь код, не имеющий отношения к этой проблеме. – MrFlick

ответ

1

Я считаю, что если вы раскомментируете show_guide = TRUE, что пунктирная линия может фактически отображаться в легенде, но вы просто не можете ее увидеть. Это может произойти, например, если у вас есть 16-битное качество цвета. Если это так, то после сохранения сюжета вы увидите, что линия находится в легенде. Я сохранил как PNG.

К сожалению, после того, как вы увидите линии, вы заметите, что в вашей легенде size есть пунктирные линии. Вы захотите удалить их через linetype = 0 в override.aes.

Вы можете удалить заголовок своей легенды в пределах guide_legend за fill. Вы должны сделать это с помощью эстетики fill, потому что это то, что вы использовали для создания легенды для горизонтальной линии в вашем сюжете.

Ниже приведена сокращенная версия вашего кода для показа, чтобы показать фигуры, которые я добавляю.

ggplot(toy, aes(x = naics_3, y =contrb_08_14)) + 
    geom_point(aes(size = real_exports14), 
         colour = "#1947A3", alpha=0.9) + 
    geom_hline(aes(yintercept = mean(contrb_08_14), fill = "average"), 
         color = "#00004C", linetype = "dashed", 
         show_guide = TRUE, alpha = 0.4) + 
    guides(fill = guide_legend(title = NULL), 
      size = guide_legend(override.aes = list(size = c(4, 8, 15, 18, 24), 
                linetype = 0), 
           title = "Exports 2014", title.hjust = 0.5, 
           keywidth=0.3)) + 
    theme_classic() + 
    coord_flip() 

enter image description here