[This article was first published on Ripples, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
You cannot find peace by avoiding life (Virginia Woolf)
Combining polar coordinates, RColorBrewer
palettes, ggplot2
and a simple trigonometric function to define the width of the tiles is easy to produce nice circular plots like these:
Do you want to try? Here you have the code:
library(ggplot2) library(dplyr) library(RColorBrewer) n=500 m=50 w=sapply(seq(from=-3.5*pi, to=3.5*pi, length.out=n), function(x) {abs(sin(x))}) x=c(1) for (i in 2:n) {x[i]=x[i-1]+1/2*(w[i-1]+w[i])} expand.grid(x=x, y=1:m) %>% mutate(w=rep(w, m))-> df opt=theme(legend.position="none", panel.background = element_rect(fill="white"), panel.grid=element_blank(), axis.ticks=element_blank(), axis.title=element_blank(), axis.text=element_blank()) ggplot(df, aes(x=x,y=y))+geom_tile(aes(fill=x, width=w))+ scale_fill_gradient(low=brewer.pal(9, "Greens")[1], high=brewer.pal(9, "Greens")[9])+ coord_polar(start = runif(1, min = 0, max = 2*pi))+opt ggplot(df, aes(x=x,y=y))+geom_tile(aes(fill=w, width=w))+ scale_fill_gradient(low=brewer.pal(9, "Reds")[1], high=brewer.pal(9, "Reds")[9])+ coord_polar(start = runif(1, min = 0, max = 2*pi))+opt ggplot(df, aes(x=x,y=y))+geom_tile(aes(fill=y, width=w))+ scale_fill_gradient(low=brewer.pal(9, "Purples")[1], high=brewer.pal(9, "Purples")[9])+ coord_polar(start = runif(1, min = 0, max = 2*pi))+opt ggplot(df, aes(x=x,y=y))+geom_tile(aes(fill=w*y, width=w))+ scale_fill_gradient(low=brewer.pal(9, "Blues")[9], high=brewer.pal(9, "Blues")[1])+ coord_polar(start = runif(1, min = 0, max = 2*pi))+opt
To leave a comment for the author, please follow the link and comment on their blog: Ripples.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.