Ggplot2 আর প্লটে অক্ষের জন্য সীমা কীভাবে সেট করবেন?


358

আমি নিম্নলিখিত প্লট:

library(ggplot2)    

carrots <- data.frame(length = rnorm(500000, 10000, 10000))
cukes <- data.frame(length = rnorm(50000, 10000, 20000))
carrots$veg <- 'carrot'
cukes$veg <- 'cuke'
vegLengths <- rbind(carrots, cukes)

ggplot(vegLengths, aes(length, fill = veg)) +
 geom_density(alpha = 0.2)

এখন আমি শুধুমাত্র মধ্যে অঞ্চল প্লটে বিভক্ত করতে চান x=-5000করতে 5000, সমগ্র পরিসীমা পরিবর্তে।

আমি এটা কিভাবে করবো?

উত্তর:


584

মূলত আপনার কাছে দুটি বিকল্প রয়েছে

scale_x_continuous(limits = c(-5000, 5000))

অথবা

coord_cartesian(xlim = c(-5000, 5000)) 

যেখানে প্রথম প্রদত্ত ব্যাপ্তির বাইরে সমস্ত ডেটা পয়েন্ট সরিয়ে দেয় এবং দ্বিতীয়টি কেবল দৃশ্যমান অঞ্চলটি সামঞ্জস্য করে। বেশিরভাগ ক্ষেত্রে আপনি পার্থক্যটি দেখতে পাবেন না, তবে আপনি যদি ডেটাতে কোনও কিছু ফিট করেন তবে এটি সম্ভবত উপযুক্ত মানগুলি পরিবর্তন করতে পারে।

আপনি শর্টহ্যান্ড ফাংশন xlim(বা ylim) ও ব্যবহার করতে পারেন , যা প্রথম বিকল্পের মতো প্রদত্ত সীমার বাইরে ডেটা পয়েন্টগুলি সরিয়ে দেয়:

+ xlim(-5000, 5000)

আরও তথ্যের জন্য বিবরণ চেক করুন coord_cartesian

RStudio cheatsheet জন্য ggplot2তোলে এই বেশ চাক্ষুষরূপে সাফ করুন। এখানে সেই চিটশিটের একটি ছোট্ট অংশ রয়েছে:

এখানে চিত্র বর্ণনা লিখুন

সিসি বিওয়াইয়ের অধীনে বিতরণ করা হয়েছে


16
এখন আছে library(scales); ... + scale_x_continuous(limits = c(-5000, 5000), oob=squish)(ডিফল্ট হয় oob=censor); দেখতে ?squish, ?censor: groups.google.com/forum/#!topic/ggplot2/AsJ6xpmR9tU
বেন Bolker

5
বিশেষ দ্রষ্টব্য। আপনি যদি লাইন / বহুভুজের সাথে লেনদেন করেন যেখানে কিছু
অংশটি

1
@ জিওথোরি: এই coord_cartesianপদ্ধতির ক্ষেত্রেও কি এটি সত্য ?
নিক স্টাওনার

1
না আমার আরও সুনির্দিষ্ট হওয়া উচিত ছিল না, কেবল প্রথম পদ্ধতি

অনুশীলনে, 'মুদ্রণ' উদ্দেশ্যে, coord_cartesian(xlim = আপনার সম্ভবত সম্ভবত পুনরায় ylimসেট করতে হবে এবং লেবেল এবং গ্রিড ব্রেকগুলি পুনরায় সেট করতে হবে।
প্যাট্রিকটি

44

দ্রুত দ্রষ্টব্য: আপনি যদি coord_flip()এক্স এবং y অক্ষকে ফ্লিপ করতেও ব্যবহার করে থাকেন তবে আপনি ব্যবহার করে সীমার সীমা নির্ধারণ করতে পারবেন না coord_cartesian()কারণ এই দুটি ফাংশনই একচেটিয়া ( এখানে দেখুন )।

ভাগ্যক্রমে, এটি একটি সহজ ফিক্স; এর মধ্যে আপনার সীমা সেট করুন coord_flip():

p + coord_flip(ylim = c(3,5), xlim = c(100, 400))

এটি কেবল দৃশ্যমান পরিসীমা পরিবর্তিত করে (অর্থাত্ ডেটা পয়েন্টগুলি সরাবে না)।


আমার অনুরূপ তবে আরও কঠিন প্রশ্ন এখানে পোস্ট করা হয়েছে stackoverflow.com/questions/61531149/… কীভাবে কেবল একটি
পক্ষকে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.