R: drop = FALSE не работает, несмотря на определение уровней

#r #ggplot2 #legend #levels

Вопрос:

Я не могу заставить drop = false работать, даже если я определяю уровни. В моей легенде по-прежнему отображаются только метки, представленные в данных, а не все. Как это исправить?

Воспроизводимый пример:

 df_roles <- structure(list(name = c("Afghanistan", "Albania", "Algeria", 
"Angola", "Antigua and Barbuda", "Argentina"), connectivity = c(-0.705966241952489, 
-0.0731279772540426, -0.356534047286986, -0.356534047286986, 
-0.846596967441032, 1.71626320831937), participation = c(0.56, 
0.4140625, 0.611570247933884, 0.631111111111111, 0.666666666666667, 
0.732510288065844), role = structure(c(2L, 2L, 2L, 3L, 3L, 6L
), .Label = c("Ultra peripheral", "Peripheral", "Connector", 
"Kinless", "Provincial", "Connector Hub", "Kinless Hub"), class = c("ordered", 
"factor")), result = c(-0.395341095493394, -0.030279553081752, 
-0.218045615696173, -0.225012598732231, -0.564397978294022, 1.25718045712283
), degs = c(3, 12, 1, 1, 1, 15)), row.names = c(NA, 6L), class = "data.frame")
 

Мой код:

 df_roles$role <- factor(df_roles$role, levels = c("Ultra peripheral",
                                                  "Peripheral",
                                                  "Connector",
                                                  "Kinless",
                                                  "Provincial",
                                                  "Connector Hub",
                                                  "Kinless Hub"))

g1 <- df_roles %>%
  ggplot(aes(participation, connectivity, label = NA))   
  geom_point((aes(colour = factor(role))))   
  scale_color_manual(values = c("Ultra peripheral" = "#440154",
                                "Peripheral"="#3F4286",
                                "Connector"="#29778D",
                                "Kinless"="#1EA682",
                                "Provincial"="#1EA667",
                                "Connector Hub"="#7BD252",
                                "Kinless Hub"="#FDE721"),drop = FALSE)
 

введите описание изображения здесь]1

Комментарии:

1. Ваш код, кажется, работает, я получаю все уровни в легенде. ![]( i.imgur.com/F48xmmF.png )

2. @Claudio Это так странно, я получаю только три уровня, на которых выполняется точный код выше.