Как создать полярный график с датой как месяц в ggplot2 - PullRequest
1 голос
/ 09 апреля 2019

У меня есть фрейм данных df с датой наступления события.Как создать полярный график, где он показывает месяцы и переменную для круга, который идет от 0 до 1, и точки в виде цвета.На графике месяцы будут проходить через столбец Date, одна красная точка чуть ниже 1 будет от pnt, синие точки - это даты появления, а ranno - столбец случайного числа от 0 до1, чтобы построить круги.

df<-structure(list(Date = structure(c(3471, 3822, 4165, 4521, 4936, 
                                      5273, 5653, 6040, 6422, 6733, 7092, 7457, 7825, 8197, 8637, 8950, 
                                      9316, 9696, 10040, 10373, 10759, 11118, 11485, 11846, 12235, 
                                      12603, 12946, 13298, 13671, 14103, 14433, 14751, 15151, 15499, 
                                      15884, 16192, 16581), class = "Date"), pnt = c(0.92, 0.92, 0.92, 
                                                                                     0.92, 0.92, 0.92, 0.92, 0.92, 0.92, 0.92, 0.92, 0.92, 0.92, 0.92, 
                                                                                     0.92, 0.92, 0.92, 0.92, 0.92, 0.92, 0.92, 0.92, 0.92, 0.92, 0.92, 
                                                                                     0.92, 0.92, 0.92, 0.92, 0.92, 0.92, 0.92, 0.92, 0.92, 0.92, 0.92, 
                                                                                     0.92), ranno = c(1.04, 0.71, 0.46, 0.83, 0.5, 0.87, 0.23, 0.78, 
                                                                                                      0.5, 0.59, 0.71, 0.92, 0.52, 0.07, 0.74, 0.57, 0.87, 0.05, 0.84, 
                                                                                                      0.25, 1.02, 0.21, 0.31, 0.05, 0.87, 0.98, 0.22, 0.79, 0.64, 0.22, 
                                                                                                      0.06, 0.89, 0.42, 0.19, 0.49, 0.09, 0.44), mon = c("July", "June", 
                                                                                                                                                         "May", "May", "July", "June", "June", "July", "August", "June", 
                                                                                                                                                         "June", "June", "June", "June", "August", "July", "July", "July", 
                                                                                                                                                         "June", "May", "June", "June", "June", "June", "July", "July", 
                                                                                                                                                         "June", "May", "June", "August", "July", "May", "June", "June", 
                                                                                                                                                         "June", "May", "May")), row.names = c(NA, -37L), class = c("tbl_df", 
                                                                                                                                                                                                                    "tbl", "data.frame"))



df
p  <- ggplot(df, aes(x=Date, y=ranno))+
  coord_polar(theta="x", start=pi/2,direction=1) 

p
pp<- p+
  geom_point(aes(pnt),color="Blue")

pp

1 Ответ

2 голосов
/ 09 апреля 2019

Мне нравится использовать пакет lubridate при работе с датами.

Я не уверен относительно цели вашей постоянной Ранно, но я добавил ее в виде красной точки на графике в соответствии с вашим вопросом. Я надеюсь, что это полезно.

library(dplyr)
library(lubridate)
library(ggplot2)
Month <- c("January","February","March","April","May","June","July","August","September","October","November","December")
months <- data.frame(Month) %>% mutate(Month = as.character(Month))
df <- df %>% 
  mutate(Month = months(Date), DecimalDay = day(Date)/days_in_month(Date)) %>% 
  full_join(months, by="Month") %>%
  mutate(Month = factor(Month, levels=month.name))

ggplot(df, aes(x=Month, y=DecimalDay))+  
  coord_polar(theta="x", start=0,direction=-1) +  
  geom_point(color="Blue") +  
  geom_point(aes(y=pnt), colour="red") +
  theme_light()

Я получаю график: enter image description here

...