Home > other >  Is there a way to plot circular data with dots inside the circle in R?
Is there a way to plot circular data with dots inside the circle in R?

Time:09-01

I have plotted a circular dot plot in R using the circular package, and I am trying to figure out how to stack the dots inside the circle (instead of outside as shown).

library("circular")

control.circ <- circular(ACT34_radarplot_input, units = "hours", template = "clock24")

# Plot circular dot plot w/ stacked dots

plot.circular(control.circ, stack = TRUE, pch = 20, sep = 0.05, shrink = 1.0, col = "red", main = "Act 34 Significant Genes Phases")

Example of what I have so far

CodePudding user response:

I'm not sure this is possible with circular, but it can be done in ggplot with a bit of data manipulation. Although you did not include it in your question, I assume ACT34_radarplot_input is just a vector of numbers between 0 and 24, so we can replicate it like this:

set.seed(1)
ACT34_radarplot_input <- runif(300, 0, 24)

You can reshape and plot this in gpplot as follows:

library(tidyverse)

ACT34_radarplot_input %>% 
  hist(breaks = seq(0, 24, 0.2), plot = FALSE) %>%
  `[`(c(2, 4)) %>%
  as_tibble() %>%
  group_by(mids) %>%
  summarize(y = -seq(counts), .groups = "drop") %>%
  filter(y < 0) %>%
  ggplot(aes(mids, y))  
  geom_point(col = "red2", size = 3)  
  geom_hline(yintercept = 0)  
  scale_x_continuous(breaks = c(0:24), limits = c(0, 24))  
  ylim(c(-20, 0))  
  coord_polar()  
  ggtitle("Act 34 Significant Genes Phases")  
  theme_void()  
  theme(axis.text.x = element_text(size = 16),
        plot.title = element_text(size = 20, hjust = 0.5))

enter image description here

  • Related