অক্ষ টিকের সংখ্যা বৃদ্ধি করুন


188

আমি কিছু ডেটার জন্য প্লট তৈরি করছি, তবে টিকের সংখ্যা খুব কম, পড়তে আমার আরও নির্ভুলতার প্রয়োজন ।

Ggplot2 এ অক্ষ টিকের সংখ্যা বাড়ানোর কোনও উপায় আছে কি?

আমি জানি আমি জিপিপ্লটকে অক্ষর টিক হিসাবে ভেক্টর ব্যবহার করতে বলতে পারি, তবে আমি যা চাই তা হ'ল সমস্ত ডেটার জন্য টিকের সংখ্যা বাড়ানো। অন্য কথায়, আমি টিক নম্বরটি ডেটা থেকে গণনা করতে চাই।

সম্ভবত ggplot কিছু অ্যালগরিদম দিয়ে অভ্যন্তরীণভাবে এটি করেন তবে আমি যা চাই তা পরিবর্তন করতে এটি কীভাবে এটি করতে পারে তা খুঁজে পেলাম না।

উত্তর:


186

আপনি ggplots ডিফল্ট স্কেলগুলি পরিবর্তন করে scale_x_continuousএবং / অথবা দ্বারা ওভাররাইড করতে পারেন scale_y_continuous। উদাহরণ স্বরূপ:

library(ggplot2)
dat <- data.frame(x = rnorm(100), y = rnorm(100))

ggplot(dat, aes(x,y)) +
  geom_point()

আপনাকে এটি দেয়:

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

এবং স্কেলগুলি ওভাররাইড করা আপনাকে এরকম কিছু দিতে পারে:

ggplot(dat, aes(x,y)) +
  geom_point() +
  scale_x_continuous(breaks = round(seq(min(dat$x), max(dat$x), by = 0.5),1)) +
  scale_y_continuous(breaks = round(seq(min(dat$y), max(dat$y), by = 0.5),1))

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

আপনি যদি কোনও প্লটের নির্দিষ্ট অংশে কেবল "জুম" করতে চান তবে যথাক্রমে xlim()এবং দেখুন ylim()। অন্যান্য যুক্তিগুলিও বুঝতে এখানে ভাল অন্তর্দৃষ্টি পাওয়া যাবে


4
আসলে বিন্দুটি byযুক্তিটিকে "সাধারণীকরণ" করা , সংখ্যার বিভিন্ন স্কেলের কাছে অর্থাত্ ০.৫ হ'ল এই ডেটাটির জন্য ভাল মান হ'ল রেখাটি সি (-৩,৩) হয় তবে এটি কোনও পরিসরের জন্য কোনও ভাল পরিসীমা নয় সি (0,5000)। কিছু ফাংশন আছে যা এটি গণনা করে?
জোও ড্যানিয়েল

3
@ জোওডানিয়েল - আমার অর্থ জিপিপ্লট স্বয়ংক্রিয়ভাবে এটিতে একটি ভাল কাজ করে। যদি এটি ফলাফলের সন্তোষজনক সেট তৈরি না করে তবে আমি নিশ্চিত নই যে আলাদা কিছু সরবরাহের জন্য কোনও কার্যনির্বাহিত রয়েছে। আপনি যে বিশদটি চাইবেন তা আপনার চক্রান্তের জন্য নির্দিষ্ট হবে তবে কোনও নমুনা সনাক্ত করার জন্য কিছু পরীক্ষার ক্ষেত্রে এবং আপনার নির্দিষ্ট স্তরের বিশদটি দিয়ে ভাবুন ... যদি এটি একটি বক্সপ্লট হয় তবে এর মতো কিছু max-min/30খুব সাধারণ "বালতি" আকার ... তবে এটি আপনার জন্য একটি ভাল সূচনা পয়েন্ট হতে পারে বা নাও হতে পারে।
চেজ

4
টাইম সিরিজের জন্য বছরের মাসের মতো এক্স-অক্ষের শ্রেণিবদ্ধ মানগুলির জন্য কী?
স্কট ডেভিস

3
@ স্কটডাভিসের লিঙ্কটি একবার দেখুন । আপনি ব্যবহার করতে পারেনscale_x_date(date_breaks = "5 months", date_minor_breaks = "1 months")
মার্কাস হাশেল

জুমিংয়ের coord_cartesianপরিবর্তে ব্যবহার করা উচিত xlimstackoverflow.com/questions/25685185/...
qwr

167

ড্যানিয়েল ক্রিজিয়ানের মন্তব্যের ভিত্তিতে আপনি লাইব্রেরি pretty_breaksথেকে ফাংশনটিও ব্যবহার করতে পারেন scalesযা স্বয়ংক্রিয়ভাবে আমদানি করা হয়:

ggplot(dat, aes(x,y)) + geom_point() +
scale_x_continuous(breaks = scales::pretty_breaks(n = 10)) +
scale_y_continuous(breaks = scales::pretty_breaks(n = 10))

আপনাকে যা করতে হবে তা হ'ল টিকের সংখ্যা sertোকানো n


কিছুটা কম কার্যকর সমাধান (যেহেতু আপনাকে আবার ডেটা ভেরিয়েবল নির্দিষ্ট করতে হবে), আপনি বিল্ট-ইন prettyফাংশনটি ব্যবহার করতে পারেন :

ggplot(dat, aes(x,y)) + geom_point() +
scale_x_continuous(breaks = pretty(dat$x, n = 10)) +
scale_y_continuous(breaks = pretty(dat$y, n = 10))

16
এটি পরিষ্কারভাবে সেরা উত্তর! বিটিডাব্লু জিপিপ্লট ইতিমধ্যে আমদানি করে scalesতবে আপনার নামস্থানে ফাংশন যুক্ত করে না। অতএব আপনি তাদের আমদানি না করে কল করতে পারেন scales::pretty_breaks(n = 10)
while

63

আপনি এতে কোনও ফাংশন যুক্তি সরবরাহ করতে পারেন scaleএবং টিকের অবস্থানগুলি গণনা করার জন্য জিজিপ্লাট সেই ফাংশনটি ব্যবহার করবে।

library(ggplot2)
dat <- data.frame(x = rnorm(100), y = rnorm(100))
number_ticks <- function(n) {function(limits) pretty(limits, n)}

ggplot(dat, aes(x,y)) +
  geom_point() +
  scale_x_continuous(breaks=number_ticks(10)) +
  scale_y_continuous(breaks=number_ticks(10))

81
নিজস্ব ফাংশন তৈরি করার দরকার নেই number_ticks। এটি ইতিমধ্যে কার্যকর করা হয়েছে pretty_breaks {scales}। সুতরাং: ggplot(dat, aes(x,y)) + geom_point() + scale_x_continuous(breaks=pretty_breaks(n=10)) + scale_y_continuous(breaks=pretty_breaks(n=10))
ড্যানিয়েল ক্রিজিয়ান

11
@ ড্যানিয়েল ক্রিজিয়ান: 1) require(scales)2 টি প্রয়োজন ) এটি আমার বিরতিগুলি বৈজ্ঞানিক স্বরলিপিতে উপস্থিত হওয়া রোধ করতে পারে, তাই 1e6 1000000 এ পরিবর্তন করা হয়েছে ??
smci

6
আপনি প্যাকেজ prettyছাড়াই বেস আর ব্যবহার করতে পারেন scales, কেবল আর্গুমেন্ট হিসাবে মান সরবরাহ করুন। উদাহরণস্বরূপ:(breaks=pretty(dat$x, n=10))
মলেক্স

@smci যদি ggplot2 কাজ করে তবে স্কেলগুলি পাওয়া যায়। ggplot2 আঁশ ছাড়া কাজ করবে না।
ক্লজ উইলকে

6

আসন্ন সংস্করণ v3.3.0 এর স্বয়ংক্রিয়ভাবে এবং এর জন্য বিরতি উত্পন্ন করার জন্য ggplot2একটি বিকল্প থাকবেn.breaksscale_x_continuousscale_y_continuous

    devtools::install_github("tidyverse/ggplot2")

    library(ggplot2)

    plt <- ggplot(mtcars, aes(x = mpg, y = disp)) +
      geom_point()

    plt + 
      scale_x_continuous(n.breaks = 5)

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

    plt + 
      scale_x_continuous(n.breaks = 10) +
      scale_y_continuous(n.breaks = 10)

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


4

উপরন্তু,

ggplot(dat, aes(x,y)) +
geom_point() +
scale_x_continuous(breaks = seq(min(dat$x), max(dat$x), by = 0.05))

বিনাশিত বা বিচ্ছিন্ন আকারযুক্ত এক্স-অক্ষ ডেটা (যেমন, গোলাকার প্রয়োজন হয় না) জন্য কাজ করে।

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