मैं एक बेरप्लॉट में वाई-अक्ष के आंकड़ों को प्रतिशत में कैसे बदल सकता हूं?


107

हम आकृति की तरह y अक्ष को प्रतिशत में कैसे बदल सकते हैं? मैं y अक्ष श्रेणी बदल सकता हूं लेकिन मैं इसे प्रतिशत में नहीं बना सकता। यहां छवि विवरण दर्ज करें

जवाबों:


236

उपयोग:

+ scale_y_continuous(labels = scales::percent)

या, प्रतिशत के लिए स्वरूपण पैरामीटर निर्दिष्ट करने के लिए:

+ scale_y_continuous(labels = scales::percent_format(accuracy = 1))

(कमांड labels = percentggplot2 के संस्करण 2.2.1 के बाद से अप्रचलित है)


3
मुझे अच्छा लगा कि आपको इसके लिए टाइप करने की ज़रूरत नहीं है library(scales)
अक्षय गौर

और कारण scales::percent(accuracy = 1)काम नहीं करता है क्योंकि *_format()संस्करण इसके बजाय एक फ़ंक्शन बनाते हैं ... जो भी percent()अकेले बनाता है, क्या वह सही है?
मोकेयर

62

सिद्धांत रूप में, आप labelsपैरामीटर में कोई भी सुधार कार्य कर सकते हैं :

+ scale_y_continuous(labels = function(x) paste0(x*100, "%")) # Multiply by 100 & add %  

या

+ scale_y_continuous(labels = function(x) paste0(x, "%")) # Add percent sign 

प्रतिकारक उदाहरण:

library(ggplot2)
df = data.frame(x=seq(0,1,0.1), y=seq(0,1,0.1))

ggplot(df, aes(x,y)) + 
  geom_point() +
  scale_y_continuous(labels = function(x) paste0(x*100, "%"))

8
कोई बाहरी निर्भरता के लिए +1। मुझे पता है कि चूंकि हेडली ggplot2 और तराजू दोनों के लेखक हैं, इसलिए यह वास्तव में मायने नहीं रखता है - लेकिन यह समाधान अभी भी सराहा गया है।
मार्क व्हाइट

44

ggplot2और scalesपैकेज यह कर सकते हैं:

y <- c(12, 20)/100
x <- c(1, 2)

library(ggplot2)
library(scales)
myplot <- qplot(as.factor(x), y, geom="bar")
myplot + scale_y_continuous(labels=percent)

ऐसा लगता है कि stat()विकल्प को हटा दिया गया है, जिससे त्रुटि संदेश आ सकता है। इसे इस्तेमाल करे:

library(scales)

myplot <- ggplot(mtcars, aes(factor(cyl))) + 
          geom_bar(aes(y = (..count..)/sum(..count..))) + 
          scale_y_continuous(labels=percent)

myplot

2

ऊपर @Deena से उधार, कि लेबल के लिए फ़ंक्शन संशोधन आप सोच सकते हैं की तुलना में अधिक बहुमुखी है। उदाहरण के लिए, मेरे पास एक ggplot था जहाँ गिने हुए चरों का भाजक 140 था। मैंने उसके उदाहरण का उपयोग किया:

scale_y_continuous(labels = function(x) paste0(round(x/140*100,1), "%"), breaks = seq(0, 140, 35))

इसने मुझे 140 प्रतिशत पर अपना प्रतिशत प्राप्त करने की अनुमति दी, और फिर इसे डिफ़ॉल्ट संख्याओं के बजाय 25% वेतन वृद्धि पर तोड़ दिया। यहां कुंजी यह है कि स्केल ब्रेक अभी भी मूल गणना द्वारा निर्धारित किए गए हैं, आपके प्रतिशत द्वारा नहीं। इसलिए ब्रेक को शून्य से भाजक मान तक होना चाहिए, "ब्रेक" में तीसरे तर्क के साथ "भाजक" को विभाजित किया जा रहा है, हालांकि कई लेबल ब्रेक आप चाहते हैं (जैसे 140 * 0.25 = 35)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.