как разместить значения оси Y в радиолокационной карте - PullRequest
0 голосов
/ 03 мая 2018

Я использовал следующий пример для моего вопроса: 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_bw()+
  theme(axis.text.x = element_text(colour="black",size=10), axis.text.y=element_text(size=14))+
  xlab("") + ylab("") +
  guides(color = guide_legend(ncol=2)) +
  coord_radar()

print(plot)

enter image description here

Как переместить значения оси y на радиолокационный график , чтобы они совпали с основными линиями сетки оси y и избавились от черного ящика, окружающего график?

1 Ответ

0 голосов
/ 03 мая 2018

Вы можете добавить значения оси Y в виде аннотированного текста и удалить черный ящик, изменив параметр panel.border в theme(...).

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) +
  xlab("") + ylab("") +
  guides(color = guide_legend(ncol = 2)) +
  coord_radar() +
  theme_bw()+

  # annotate
  annotate("text", x = 0, 
           y = seq(0, 1, 0.25), 
           label = seq(0, 1, 0.25)) +

  # remove original y-axis text / ticks & black border
  theme(axis.text.x = element_text(colour="black", size=10), 
        axis.text.y = element_blank(),
        axis.ticks.y = element_blank(),
        panel.border = element_blank()) 

plot

Примечание : на одном графике слишком много моделей, чтобы его было легко прочитать. Если вы делаете это для практики, это нормально. Но если вы намереваетесь использовать его для общения с другими людьми, вы можете захотеть ограничить график так, чтобы на каждом графике отображалось только несколько моделей, или выбрать другую цветовую схему, которая подчеркивает только несколько интересующих моделей.

...