বারপ্লট-এ আমি কীভাবে ওয়াই-অক্ষগুলি পরিসংখ্যানকে শতাংশে পরিবর্তন করতে পারি?


107

আমরা কীভাবে y অক্ষকে চিত্রের মতো শতাংশে পরিবর্তন করতে পারি? আমি y অক্ষের পরিসরটি পরিবর্তন করতে পারি তবে আমি এটি শতাংশে করতে পারি না। এখানে চিত্র বর্ণনা লিখুন

উত্তর:


236

ব্যবহার করুন:

+ scale_y_continuous(labels = scales::percent)

বা, শতাংশের জন্য বিন্যাসের পরামিতিগুলি নির্দিষ্ট করতে:

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

( labels = percentggplot2 এর ২.২.১ সংস্করণ থেকে কমান্ডটি অপ্রচলিত)


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

উপরের @ দীনার কাছ থেকে ধার করা, লেবেলগুলির জন্য ফাংশন পরিবর্তনটি আপনি ভাবার চেয়ে বেশি বহুমুখী le উদাহরণস্বরূপ, আমার একটি জিপিপ্লট ছিল যেখানে গণনাযুক্ত ভেরিয়েবলগুলির ডিনোমিনেটর 140 ছিল I আমি তার উদাহরণটি এভাবে ব্যবহার করেছি:

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

এটি আমার 140 শতাংশে আমার শতাংশ পেতে এবং তারপরে এটির ডিফল্ট হওয়া অদ্ভুত সংখ্যার চেয়ে 25% ইনক্রিমেন্টে স্কেলটি ভেঙে দেয়। এখানে মূল কীটি হল স্কেল ব্রেকগুলি এখনও আপনার শতাংশের দ্বারা নয়, মূল গণনা দ্বারা সেট করা আছে। সুতরাং বিরতিগুলি অবশ্যই শূন্য থেকে ডিনোমিনেটর মানের হতে হবে, "ব্রেক" এর তৃতীয় যুক্তি হ'ল ডিনমিনেটর হিসাবে বিভক্ত হওয়া অনেকগুলি লেবেল ব্রেক আপনি চান (যেমন 140 * 0.25 = 35)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.