ggplot2 изменить цвет конкретной линии с радиолокационной карты

Я использовал следующий пример для моего вопроса: http://www.cmap.polytechnique.fr/~lepennec/R/Radar/RadarAndParallelPlots.html

mtcarsscaled <- as.data.frame(lapply(mtcars, ggplot2:::rescale01))
mtcarsscaled$model <- rownames(mtcars)
mtcarsmelted <- reshape2::melt(mtcarsscaled)

coord_radar <- function (theta = "x", start = 0, direction = 1) 
{
  theta <- match.arg(theta, c("x", "y"))
  r <- if (theta == "x") 
    "y"
  else "x"
  ggproto("CordRadar", CoordPolar, theta = theta, r = r, start = start, 
          direction = sign(direction),
          is_linear = function(coord) TRUE)
}

plot <- ggplot(mtcarsmelted, aes(x = variable, y = value)) +
  geom_polygon(aes(group = model, color = model), fill = NA, size = 2, show.legend = FALSE) +
  geom_line(aes(group = model, color = model), size = 2) +
  theme(strip.text.x = element_text(size = rel(0.8)),
        axis.text.x = element_text(size = rel(0.8)),
        axis.ticks.y = element_blank(),
        axis.text.y = element_blank()) +
  xlab("") + ylab("") +
  guides(color = guide_legend(ncol=2)) +
  coord_radar()

print(plot)

Как я могу изменить цвет самой внешней линии графика / сетки (линия под y-метками)?

Любая помощь высоко ценится!

1 ответ

К сожалению, эта строка контролируется аргументом grid.major, но не является явным разрывом. Единственный способ сделать это - отменить оставшиеся перерывы следующим образом:

ggplot(mtcarsmelted, aes(x = variable, y = value)) +
  geom_polygon(aes(group = model, color = model), fill = NA, size = 2, show.legend = FALSE) +
  geom_line(aes(group = model, color = model), size = 2) +
  theme(strip.text.x = element_text(size = rel(0.8)),
        axis.text.x = element_text(size = rel(0.8)),
        axis.ticks.y = element_blank(),
        axis.text.y = element_blank(),
        panel.grid.major.y = element_line(colour = "blue", size = 0.2), #changed
  xlab("") + ylab("") +
  guides(color = guide_legend(ncol=2)) +
  scale_y_continuous(breaks = NULL) + #changed
  coord_radar()

Который дает:

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

К сожалению, вы теряете способность иметь любую сетку (которая, если честно, если вы не помечаете полярную сетку, в любом случае не так важна). Вы можете изменить цвет с помощью цветового аргумента в element_line

Другие вопросы по тегам