PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Saturday, April 23, 2022

[FIXED] How to combine multiple pie charts wih a loop using plotly or ggplot

 April 23, 2022     ggplot2, pie-chart, r, r-plotly     No comments   

Issue

I have the following dataframe (in a reduced version, it can achieve up to 1000 variables) and I'd like to build multiple pie charts for each of the columns of my dataframe. I found this code in order to build them with a loop using plotly (but suggestions with ggplot would be good, too) but I don't know how to plot them together, in a single plot, using a loop to combine them. The dataset is the following:

a=c(20.0,20.0,20.0,20.0,20.0)
b=c(19.0,21.0,22.0,18.0,20.0)
c=c(20.0,20.5,19.5,15.0,25.0)
d=c(13.0,17.0,15.5,24.5,20.0)
e=c(20.0,10.5,29.5,35.0,5.0)
data=cbind(a,b,c,d,e)
colnames(data)<-c("A","B","C","D","E")
rownames(data)<-c("A","B","C","D","E")
data=as.table(data)
data

while the code for writing the different pie charts is, as follows:

for(i in 1:dim(data)[1]){
  assign(paste0("pie_",i), plot_ly(as.data.frame(data[,i], nm = "y"), 
                                 labels = colnames(data), values = ~y, type = 'pie'))
}

I'd like to combine all the created pie charts together, using a loop in order to make the combination automatic according to the number of different columns (variables) in the dataframe. Thank you in advance for the help!


Solution

Here a ggplot2 solution, that avoids loops, as ggplot2::facet_wrap() does the job simply:

library(reshape2)
library(tidyverse)

melt(data) %>%                                # ggplot loves long format
ggplot(aes("", value, fill = Var1)) +         # here the variables
               geom_bar(stat = 'identity') +  # bars
               coord_polar("y") +             # make it round
               facet_wrap(vars(Var2))         # facets

enter image description here

If I can advice you, generally bar charts to 100 are imho a bit better, because they make easier the comparisons between bars instead of circles (there lot of opinions about it). In case, the code is more simple, and you're allowed to use plotly, due supported (it seems coord_polar() is not supported yet).

library(plotly)
p <- melt(data) %>% ggplot(aes(Var2, value, fill = Var1)) +
               geom_bar(stat = 'identity')

ggplotly(p)

enter image description here



Answered By - s__
Answer Checked By - Mildred Charles (PHPFixing Admin)
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing