By aschinchon
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
Related
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 on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more…
If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook…
Source:: r-bloggers.com