Graphical pie charts graph in r

I am trying to make a concentric pie chart. The inner pie represents three classes of items, and each class should be split into 3 subclasses (of course, the slices for the subclasses must match the corresponding internal slice). this is what i tried:

layout(matrix(c(1,1,1,1,2,1,1,1,1), nrow=3)); pie(x=c(14,22,15,3,15,33,0,6,45),labels="",col=c("#f21c39","#dba814","#7309de")); pie(x=c(51,51,51),labels=c("O","VG","V"),col=c("#c64719","#0600f5","#089c1f"))

It worked, but the inner pie is too small. I tried playing with the option radius

, but the outer slices don't match the inner ones. how can i adjust them?

+3


source to share


3 answers


Use par(new=TRUE)

to overload pix, not layout()

in this case

pie(x=c(14,22,15,3,15,33,0,6,45),labels="",
    col=c("#f21c39","#dba814","#7309de"))
par(new=TRUE)
pie(x=c(51,51,51),labels=c("O","VG","V"),radius=.5,
    col=c("#c64719","#0600f5","#089c1f"))

      



enter image description here

+5


source


Three years later. this can be achieved using the sunburstR package. http://timelyportfolio.github.io/sunburstR/example_baseball.html

Example:

DF <- data.frame(LOGRECNO = c(60, 61, 62, 63, 64, 65),
             STATE = c(1, 1, 1, 1, 1, 1),
             COUNTY = c(1, 1, 1, 1, 1, 1), 
             TRACT = c(21100, 21100, 21100, 21100, 21100, 21100), 
             BLOCK = c(1053, 1054, 1055, 1056, 1057, 1058))
DF$BLOCKID <-
  paste(DF$LOGRECNO, DF$STATE, DF$COUNTY, 
        DF$TRACT, DF$BLOCK, sep = "-")

DF %>% 
  select(BLOCKID) %>% 
  group_by(BLOCKID) %>% 
  summarise(Tots=n())->dftest

sunburst(dftest)  

      



enter image description here enter image description here

I'm sure you can adapt this to suit your needs!

+4


source


you can also use the ggsunburst package

# install ggsunburst
if (!require("ggplot2")) install.packages("ggplot2")
if (!require("rPython")) install.packages("rPython")
install.packages("http://genome.crg.es/~didac/ggsunburst/ggsunburst_0.0.9.tar.gz", repos=NULL, type="source")
library(ggsunburst)

df <- read.table(header=T, text = "
parent node size
O 1 14
O 2 22
O 3 15
V 1 3
V 2 15
V 3 33
VG 1 1
VG 2 6
VG 3 45")

write.table(df, file = 'df.txt', sep = ',', row.names = F)

sb <- sunburst_data('df.txt', type = "node_parent", sep = ",")
p <- sunburst(sb, node_labels = T, leaf_labels = F, rects.fill.aes = "name")

cols <- c("O" = "#c64719", "V" = "#0600f5", "VG" = "#089c1f", "1" = "#f21c39", "2" = "#dba814", "3" = "#7309de")
p + scale_fill_manual(values = cols)

      

see sun plot here

0


source







All Articles