Как спрятать один ключ в R? - PullRequest
0 голосов
/ 19 февраля 2020

Просто чтобы прояснить: я относительно новичок в R, и код, который я использую, позаимствован у кого-то другого.

У меня есть этот график для средних значений: Polling graph

Вот мой код: https://pastebin.com/qvQERRUH

library("tidyverse")

polls <- read.csv("polls_Paris.csv")

polls <- polls %>% 
  mutate(
    date = format(as.Date(c(paste(year,month, day, sep="-")), by = "days"))
  )

for(i in c("LFI", "PS", "EELV", "PP", "Griveaux", "LREM", "Villani", "Agir", "LR", "RN", "LP")) {
  polls <- within(polls, {
    assign(paste0("ci_", i), 1.96 * sqrt(( get(paste0("liste_", i)) * (100 - get(paste0("liste_", i)))) / n))
  }
  )
}

polls.10m <- polls[polls$date > seq(as.Date(Sys.Date()), length = 2, by = "-10 months")[2],]
polls.100 <- polls[order(as.Date(polls$date)),] %>% top_n(5000, as.Date(polls$date))
#Results = data.frame(date = as.Date("2019-12-01"), support = c(69.1,30.9))

svg('Opinion polling for the 2020 Paris municipal election.svg', width = 12, height = 6)
polls.100 %>%
  gather(party, support, c(liste_LFI,liste_PS,liste_EELV,liste_PP,liste_Griveaux,liste_LREM,liste_Villani,liste_Agir,liste_LR,liste_RN,liste_LP), factor_key=TRUE) %>%
  ggplot(aes(x=as.Date(date), y=support, colour=party)) +
  geom_point(size=2.5, alpha=0.275) +
  geom_smooth(se=FALSE, method="loess", span=1) +
  labs(y = NULL,
       x = NULL) +
  guides(colour = guide_legend(ncol = 1, override.aes = list(linetype = 0, size = 3, alpha = 1))) +
  scale_colour_manual(labels = c("Simonnet (LFI)", "Hidalgo (PS-PCF-G·s)", "Belliard (EELV)", "Gantzer (DVG)", "Griveaux (LREM-MR-UDI)", "Griveaux (avant diss. de Villani)", "Villani (Diss. LREM-PRG)", "Bournazel (Agir)", "Dati (LR)", "Federbusch (DVD-RN)", "Campion (SE)"), values = c("#cc2443", "#FF8080", "#00c000", "#ffc0c0", "#ffeb00", "#ffeb00", "#FF7F50", "#adc1fd", "#0066CC", "#0D378A", "#808080", "#808080")) +
  theme(
    plot.margin = margin(t = 0, unit = "cm"),
    plot.background = element_blank(), panel.background = element_rect(fill = "grey92", colour = NA),
    panel.border = element_blank(), legend.background = element_rect(fill = "transparent", colour = NA),
    legend.key = element_rect(fill = "transparent", colour = NA), legend.title = element_blank(),
    strip.background = element_rect(fill = "transparent", colour = NA),
    panel.grid.major = element_line(colour = "#FFFFFF"), panel.grid.minor = element_line(colour = "#FFFFFF", size = 0.25),
    axis.ticks = element_line(colour = "grey20"), axis.line = element_blank(),
    plot.title = element_text(size = 12, hjust = 0),
    plot.subtitle = element_text(size = 12, hjust = 0),
    plot.caption = element_text(size = 12, colour = "#212121"),
    axis.title = element_text(size = 12, face = "plain"), axis.text = element_text(size = 12, face = "plain", colour = "grey30"),
    legend.position = "right",
    legend.text = element_text(size = 12), strip.text = element_text(size = 12, face = "plain"),
    legend.margin = margin(t = 0, unit = "cm"),
  ) +
  scale_y_continuous(breaks = seq(0,33,5), minor_breaks = seq(0,33,1), limits = c(0, 33), expand = c(0, 0)) +
  scale_x_date(breaks="6 months", minor_breaks="1 month", expand = c(0, 0))
  #geom_point(data = Results, colour = c("#808080", "#E81B23"), size=4, shape=5) +
  #geom_point(data = Results, colour = c("#808080", "#E81B23"), size=3.5, shape=18)
dev.off()

Как видите, линия Гриво разделена, чтобы отделить до и после кандидатуры диссидента Вильани. ; на самом деле это две отдельные строки (также отдельные в наборе данных). Поэтому имя Гриво должно появляться дважды.

Как мне удалить ключ из одного набора (удалить ключ как для точек, так и для линии регрессии)?

1 Ответ

1 голос
/ 19 февраля 2020

Вот хак. Чтобы удалить ключ легенды, удалите его из аргумента breaks в scale_*_manual или эквивалентный, но вы должны сохранить то же число values, что и в color/fill aestheti c.
это уникальные значения. лучше показать на примере. Я буду использовать встроенный набор данных iris.
Для удаления ключа легенды относительно "versicolor",

levels(df1$Species)
#[1] "setosa"     "versicolor" "virginica" 

, просто не включайте его в breaks.

library(ggplot2)

df1 <- iris[3:5]

ggplot(df1, aes(Petal.Length, Petal.Width, color = Species)) +
  geom_point() +
  geom_smooth(se = FALSE, method = "loess", span = 1) +
  scale_color_manual(breaks = c("setosa", "virginica"),
                     values = c("red", "green", "blue"))

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...