दिलचस्प पोस्ट
गैर-स्थानीय होस्ट अनुरोधों को सुनने के लिए मैं केस्ट्रेल वेब सर्वर को कैसे प्राप्त करूं? सी में सॉकेट्स के माध्यम से एक संरचना उत्तीर्ण करना कांजी 2 नए राउटर का उपयोग करके पृष्ठ का शीर्षक बदलना जांचें कि एकाधिक स्ट्रिंग किसी अन्य स्ट्रिंग में मौजूद हैं या नहीं स्लाइडर से पहले और बाद में अलग-अलग रंग के लिए एचटीएमएल 5 रेंज इनपुट कैसे करें? स्मृति त्रुटि छवि व्यू समस्या से बाहर अनुरोधों के साथ अजगर में बड़ी फाइल कैसे डाउनलोड करें? कैसे परिवर्तित / d3.js ग्राफ को पीडीएफ / जेपीईजी को बचाने के लिए फ़ाइल पथ से छवि दृश्य दिखाएं? क्यों डबल है। MIN_VALUE ऋणात्मक नहीं है जावा – अंगूठी बफर Win32 पर जीसीसी के साथ असेंबली के प्रतीकों को अग्रसर करना जोड़ रहा है? क्लियरिंग और डिफॉल्ट होम एप्लीकेशन सेट करना JQuery AJAX के साथ क्रॉस-डोमेन समापन बिंदु लोड करना क्या लैम्ब्डा अभिव्यक्ति हर बार ढेर पर एक ऑब्जेक्ट बना देती है?

स्पष्ट चर के चार्ट में गणना के बजाय% दिखाएं

मैं एक विशिष्ट वैरिएबल की साजिश रच रहा हूं और प्रत्येक श्रेणी मूल्य के लिए गणना दिखाने के बजाय।

मैं उस श्रेणी में मूल्यों का प्रतिशत प्रदर्शित करने के लिए ggplot को प्राप्त करने का एक तरीका ढूंढ रहा हूं। बेशक, गणना प्रतिशत और साजिश के साथ एक और चर बनाने के लिए संभव है, लेकिन मुझे इसे कई दर्जन बार करना पड़ता है और मुझे उम्मीद है कि एक आदेश में इसे प्राप्त करना होगा।

मैं ऐसा कुछ के साथ प्रयोग कर रहा था

 qplot(mydataf) + stat_bin(aes(n = nrow(mydataf), y = ..count../n)) + scale_y_continuous(formatter = "percent") 

लेकिन मुझे इसका प्रयोग गलत तरीके से करना होगा, क्योंकि मुझे त्रुटियां मिलती हैं

आसानी से सेटअप पुन: उत्पन्न करने के लिए, यहां एक सरल उदाहरण है:

 mydata <- c ("aa", "bb", null, "bb", "cc", "aa", "aa", "aa", "ee", null, "cc"); mydataf <- factor(mydata); qplot (mydataf); #this shows the count, I'm looking to see % displayed. 

असली मामले में मैं शायद qplot बजाय qplot का उपयोग करेंगे, लेकिन stat_bin का उपयोग करने का सही तरीका अभी भी मुझे छुटकारा दिलाता है

मैंने इन चार तरीकों की भी कोशिश की है:

 ggplot(mydataf, aes(y = (..count..)/sum(..count..))) + scale_y_continuous(formatter = 'percent'); ggplot(mydataf, aes(y = (..count..)/sum(..count..))) + scale_y_continuous(formatter = 'percent') + geom_bar(); ggplot(mydataf, aes(x = levels(mydataf), y = (..count..)/sum(..count..))) + scale_y_continuous(formatter = 'percent'); ggplot(mydataf, aes(x = levels(mydataf), y = (..count..)/sum(..count..))) + scale_y_continuous(formatter = 'percent') + geom_bar(); 

लेकिन सभी 4 देना:

 Error: ggplot2 doesn't know how to deal with data of class factor 

समान त्रुटि के सरल मामले के लिए प्रकट होता है

 ggplot (data=mydataf, aes(levels(mydataf))) + geom_bar() 

इसलिए यह स्पष्ट रूप से कुछ है कि कैसे ggplot एक एकल वेक्टर के साथ इंटरैक्ट करता है। मैं अपने सिर को खरोंच कर रहा हूँ, उस त्रुटि के लिए googling एक एकल परिणाम देता है

वेब के समाधान से एकत्रित समाधान "स्पष्ट चर के चार्ट में गणना के बजाय% दिखाएं"

चूंकि यह उत्तर दिया गया था कि ggplot सिंटैक्स में कुछ महत्वपूर्ण बदलाव हुए हैं। उपरोक्त टिप्पणियों में चर्चा को सम्मिलित करना:

  require(ggplot2) require(scales) p <- ggplot(mydataf, aes(x = foo)) + geom_bar(aes(y = (..count..)/sum(..count..))) + ## version 3.0.9 # scale_y_continuous(labels = percent_format()) ## version 3.1.0 scale_y_continuous(labels=percent) 

mtcars का उपयोग करते हुए यहां एक प्रतिलिपि प्रस्तुत करने योग्य उदाहरण है:

  ggplot(mtcars, aes(x = factor(hp))) + geom_bar(aes(y = (..count..)/sum(..count..))) + ## scale_y_continuous(labels = percent_format()) #version 3.0.9 scale_y_continuous(labels = percent) #version 3.1.0 

यहां छवि विवरण दर्ज करें

यह सवाल वर्तमान में 'जीजीप्लोट गिन वेज प्रति प्रतिशत हिस्टोग्राम' के लिए गूगल पर # 1 हिट है इसलिए उम्मीद है कि यह स्वीकार किए गए उत्तर पर टिप्पणी में रखे गए सभी जानकारी को दूर करने में मदद करेगा।

टिप्पणी: यदि hp एक कारक के रूप में सेट नहीं है, तो ggplot रिटर्न:

यहां छवि विवरण दर्ज करें

यह संशोधित कोड काम करना चाहिए

 p = ggplot(mydataf, aes(x = foo)) + geom_bar(aes(y = (..count..)/sum(..count..))) + scale_y_continuous(formatter = 'percent') 

यदि आपके डेटा में एनएएस हैं और आप उन्हें प्लॉट में शामिल नहीं करना चाहते हैं, तो पास न। नोिट (मायडाटाफ) को ggplot के तर्क के रूप में पास करें।

उम्मीद है की यह मदद करेगा।

Ggplot2 संस्करण 2.1.0 के साथ यह है

 + scale_y_continuous(labels = scales::percent) 

यदि आप y- अक्ष पर प्रतिशत चाहते हैं और सलाखों पर लेबल लगाते हैं:

 library(ggplot2) library(scales) ggplot(mtcars, aes(x = as.factor(am))) + geom_bar(aes(y = (..count..)/sum(..count..))) + geom_text(aes(y = ((..count..)/sum(..count..)), label = scales::percent((..count..)/sum(..count..))), stat = "count", vjust = -0.25) + scale_y_continuous(labels = percent) + labs(title = "Manual vs. Automatic Frequency", y = "Percent", x = "Automatic Transmission") 

यहां छवि विवरण दर्ज करें

बार लेबल्स जोड़ते समय, आप अंत में जोड़कर क्लीनर चार्ट के लिए y- अक्ष को छोड़ना चाह सकते हैं:

  theme( axis.text.y=element_blank(), axis.ticks=element_blank(), axis.title.y=element_blank() ) 

यहां छवि विवरण दर्ज करें

मार्च 2017 तक, ggplot2 2.2.1 के साथ, मुझे लगता है कि हेडली ggplot2 के डेटा विज्ञान पुस्तक के लिए आर में सबसे अच्छा समाधान समझाया गया है:

 ggplot(mydataf) + stat_count(mapping = aes(x=foo, y=..prop.., group=1)) 

stat_count दो चर गणना करता है: count डिफ़ॉल्ट रूप से उपयोग की जाती है, लेकिन आप prop का उपयोग करने का चयन कर सकते हैं।

यदि आप y अक्ष पर प्रतिशत लेबल्स लेकिन वास्तविक एनएस चाहते हैं, तो यह प्रयास करें:

  library(scales) perbar=function(xx){ q=ggplot(data=data.frame(xx),aes(x=xx))+ geom_bar(aes(y = (..count..)),fill="orange") q=q+ geom_text(aes(y = (..count..),label = scales::percent((..count..)/sum(..count..))), stat="bin",colour="darkgreen") q } perbar(mtcars$disp) 

तथ्यात्मक डेटा के लिए यहां एक वैकल्पिक उपाय है (@ एंड्रयू द्वारा स्वीकृत जवाब इस मामले में काम नहीं करता।) यह विचार है कि डीप्लर का उपयोग करके प्रतिशत मान की गणना करें और फिर भूखंड बनाने के लिए geom_col का उपयोग करें।

 library(ggplot2) library(scales) library(magrittr) library(dplyr) binwidth <- 30 mtcars.stats <- mtcars %>% group_by(cyl) %>% mutate(bin = cut(hp, breaks=seq(0,400, binwidth), labels= seq(0+binwidth,400, binwidth)-(binwidth/2)), n = n()) %>% group_by(cyl, bin) %>% summarise(p = n()/n[1]) %>% ungroup() %>% mutate(bin = as.numeric(as.character(bin))) ggplot(mtcars.stats, aes(x = bin, y= p)) + geom_col() + scale_y_continuous(labels = percent) + facet_grid(cyl~.) 

यह साजिश है:

यहां छवि विवरण दर्ज करें