Как отформатировать радиолокационную карту в R с метками оси и вращением, используя ggplot2 - PullRequest
1 голос
/ 14 апреля 2019

У меня есть радиолокационная диаграмма в r, которая показывает проценты по месяцам. Я хотел бы

  • изменить график так, чтобы Ян начинался под углом 90%, а не поворачивался направо
  • изменить график так, чтобы метки для процентов отображались на графике, а не с левой стороны

Плохой график ниже

Rad Bad

Хороший график, который я хотел бы воспроизвести, ниже

enter image description here

Код для радиолокационной карты ниже

library(reshape2)
library(ggplot2)
library(dplyr)

Group <- factor(c("Jan", "Feb", "Mar", "Apr", "May", "Jun",
                  "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"),
                levels = c("Jan", "Feb", "Mar", "Apr", "May", "Jun",
                           "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"))
Urban <- c(-0.61, 0.13, 0.24, -0.30, -0.12, -1.24, 0.74, 0.55, 0.80, .2, .2, .2)
Rural <- c(1.02, -0.40, 0.73, 0.17, 0.68, 1.21, -1.35, -0.84, -1.27, .2, .2, .2)
Total <- c(0.41, -0.27, 0.97, -0.13, 0.56, -0.03, -0.61, -0.29, -0.47, 0.4, 0.4, 0.4)

# data preparation
df = data.frame(Group = Group,
                Urban = Urban,
                Rural = Rural,
                Total = Total)    
df.m <- melt(df, 
             id.vars = c("Group"), 
             measure.vars = c("Urban", "Rural","Total"),
             variable.name = "Demographics",
             value.name = "Percentage")

# plot
ggplot(data = df.m,
       aes(x = Group, y = Percentage, group = Demographics, colour = Demographics)) + 
  geom_polygon(size = 1, alpha= 0.2) + 
  ylim(-2.0, 2.0) + ggtitle("Radar")  + 
  scale_x_discrete() +
  theme_light() +
  scale_color_manual(values = c("Red", "Blue","Black")) +
  scale_fill_manual(values = c("Red", "Blue","Black")) +
  coord_polar()

1 Ответ

1 голос
/ 14 апреля 2019

Я не знаю, как с обычными терминами scale_y_continuous заставить масштаб оси Y появляться на графике, а не на его краях, но его можно подделать, используя annotate для создания специального слоя. Мы также можем повернуть полярное преобразование с помощью члена start в coord_polar.

ggplot(data=df.m,  aes(x=Group, y=Percentage, group= Demographics, colour=Demographics )) + 
  annotate("text", x = 1, y = -2:2, label = -2:2, hjust = 1) +
  geom_polygon(size = 1, alpha= 0.2) + 
  ggtitle("Radar")  + 
  scale_y_continuous(labels = NULL) +
  scale_x_discrete() +
  scale_color_manual(values= c("Red", "Blue","Black"))+
  scale_fill_manual(values= c("Red", "Blue","Black"))+
  theme_light()+
  coord_polar(start = -pi/12)

enter image description here

...