2016-01-29 11 views
5

पाई चार्ट का उपयोग कर:मैं कैसे बहु पैनल में पाई चार्ट में रिक्ति निकालें और शीर्ष पर केवल एक किंवदंती हो सकता है आर

Initial pie charts diagram

डेटा के लिए लिंक: https://drive.google.com/file/d/0BwoPt0jyGdzORkM3cVA0WjJodVk/view?usp=sharing

Mydata<-read.csv(file="final_analysis_candy_analysis.csv",head=TRUE,sep=",") 

dhfr.Arg <- table(Mydata$dhfr.Arg.59.163.137.)  
dhfr.Ile <- table(Mydata$dhfr.Ile.51.214.65.)  
dhfr.Asn108 <- table(Mydata$dhfr.Asn108.328.372.) 
glu.540 <- table(Mydata$glu.540.538.326.200.)  
gly.437 <- table(Mydata$gly.437.848.300.) 

library(plotrix) 

par(op) 
op <-par(mfrow=c(2,3),mar=c(0,0,1,0)) 
pct <- round(dhfr.Arg/sum(dhfr.Arg)*100) 
lbls <- paste(names(dhfr.Arg), pct) # add percents to labels  
lbls <- paste(lbls,"%",sep="") # ad % to labels  
lp<-pie3D(dhfr.Arg,radius=0.8,labels=lbls,explode=0.1, 
labelrad=1.4,main="dhfr Arg 59(163,137)")  
pct <- round(dhfr.Ile/sum(dhfr.Ile)*100)  
lbls <- paste(names(dhfr.Ile), pct) # add percents to labels  
lbls <- paste(lbls,"%",sep="") # ad % to labels 
lp<-pie3D(dhfr.Ile,radius=0.8,labels=lbls,explode=0.1, 
    labelrad=1.4,main="dhfr Ile 51(214,65)")  
pct <- round(dhfr.Asn108/sum(dhfr.Asn108)*100)  
lbls <- paste(names(dhfr.Asn108), pct) # add percents to labels  
lbls <- paste(lbls,"%",sep="") # ad % to labels  
lp <- pie3D(dhfr.Asn108,radius=0.8,labels=lbls,explode=0.1, 
    labelrad=1.4,main="dhfr Asn108(328,372)") 
pct <- round(glu.540/sum(glu.540)*100)  
lbls <- paste(names(glu.540), pct) # add percents to labels 
lbls <- paste(lbls,"%",sep="") # ad % to labels  
lp<-pie3D(glu.540,radius=0.8,labels=lbls,explode=0.1, 
    labelrad=1.4,main="glu 540(538,326,200)")  
pct <- round(gly.437/sum(gly.437)*100) 
lbls <- paste(names(gly.437), pct) # add percents to labels  
lbls <- paste(lbls,"%",sep="") # ad % to labels 
lp <- pie3D(gly.437,radius=0.8,labels=lbls,explode=0.1, 
    labelrad=1.4,main="gly 437(848,300)") 
par(op) 

pie charts with white space marked in black

+5

आप एक प्रतिलिपि प्रस्तुत करने योग्य उदाहरण ('pie3D' मदद फ़ाइल से ले उदाहरण के लिए) प्रदान कर सकते हैं? आपके डेटा के बिना बहुत से लोग आपकी स्क्रिप्ट चलाने में सक्षम नहीं हैं। –

+0

मैंने डेटा – andy

+1

डेटा के लिए एक लिंक जोड़ा है, कृपया अपने प्रश्न में डेटा शामिल करें क्योंकि आपका लिंक बिना किसी सूचना के ऑफ़लाइन हो सकता है, जिससे भविष्य में आपके प्रश्न को कम योग्यता मिलती है। एक पाई पर्याप्त है, जिसे वांछित प्रभाव दिखाने के लिए कई बार प्लॉट किया जा सकता है। @ कैथ मुझे लगता है कि ओपी व्यक्तिगत पाई के बीच कम जगह चाहता है। –

उत्तर

2

2 डी विज़ुअलाइज़ेशन का उपयोग करके आपकी साजिश को समझना बहुत आसान होगा। इसलिए, ggplot साथ एक विकल्प के 2 डी समाधान:

# load needed packages 
library(data.table) 
library(ggplot2) 
library(scales) 

# process & summarise the data (with data.table) 
mydat <- melt(setDT(Mydata), 
       id=1, 
       measure.vars=4:8)[, .N, by = .(variable,value) 
           ][, `:=` (perc = round(N/sum(N),2), 
              pos = cumsum(N)-0.5*N), by = variable] 

# create the plot with ggplot2 & scales 
ggplot(mydat) + 
    geom_bar(stat="identity", aes(x="", y=N, fill=value)) + 
    geom_text(aes(x = "", y = pos, label = percent(perc))) + 
    scale_x_discrete(expand = c(0,0)) + 
    scale_y_continuous(expand = c(0,0)) + 
    coord_polar(theta = "y") + 
    facet_grid(.~ variable, scales = "free") + 
    theme_minimal(base_size = 16) + 
    theme(axis.title = element_blank(), axis.text = element_blank(), 
     panel.grid = element_blank(), legend.title = element_blank()) 

जो निम्नलिखित साजिश देता है:

enter image description here

कैसे आधार आर के साथ pos चर की गणना करने के लिए या plyr साथ this answer देखें और dplyr पैकेज।


हालांकि, पाई-चार्ट अधिकतर डेटा को देखने का सबसे अच्छा तरीका नहीं है। इसके अलावा इस मामले में एक बार्ट चार्ट के परिणामस्वरूप एक स्पष्ट दृश्यता होगी। के साथ:

ggplot(mydat, aes(x=variable, y=perc, fill=value)) + 
    geom_bar(stat="identity", aes(label = percent(perc)), width=0.6) + 
    scale_y_continuous(labels = percent(c(0,0.25,0.50,0.75,1.00))) + 
    coord_flip() + 
    theme_minimal(base_size = 14) + 
    theme(axis.title = element_blank(), legend.title = element_blank()) 

आपको मिलेगा:

enter image description here

+0

मुझे मदद और आपके समाधान पसंद हैं। बहुत बहुत धन्यवाद। इससे मुझे बहुत मदद मिली है – andy

+0

@andy खुश मैं मदद कर सकता था; 'pos' चर बनाने के लिए वैकल्पिक तरीकों के लिए, [यह उत्तर] देखें (http://stackoverflow.com/a/22804400/2204410) – Jaap

1

plotrix documentation से, मार्जिन पैरामीटर mar - पाई के चारों ओर मार्जिन है। डिफ़ॉल्ट देखें mar=c(4,4,4,4) पर सेट है जो यह सफेद स्थान बना रहा है।

pie3D(x,edges=NA,radius=1,height=0.1,theta=pi/6,start=0,border=par("fg"), 
    col=NULL,labels=NULL,labelpos=NULL,labelcol=par("fg"),labelcex=1.5, 
    labelrad=1.25,sector.order=NULL,explode=0,shade=0.8,mar=c(4,4,4,4),pty="s",...) 

छोटी मात्रा में मार्च सेट करने का प्रयास करें, इसलिए अपने pie3D में इस विकल्प को कॉल करें, उदा। सभी मार्जिन को कम करने के लिए mar =c(1,1,1,1)

+0

आप सही हैं मुझे आपके समाधान के लिए बेहतर मार्जिन.थैंक का उपयोग करना था। बहुत बहुत धन्यवाद – andy

संबंधित मुद्दे