Ggplot2 এ স্ক্যাটারপ্লটস (জোড়া () সমতুল্য) এর একটি ম্যাট্রিক্স তৈরি করুন


117

রঙ, আকার ইত্যাদির জন্য অতিরিক্ত উপাদানগুলি ম্যাপিং এবং মসৃণ যোগ করার মতো দুর্দান্ত বৈশিষ্ট্যগুলি ggplot2ব্যবহার করে স্ক্যাটার প্লটগুলির একটি ম্যাট্রিক্স প্লট করা কি সম্ভব ggplot?

আমি baseফাংশন অনুরূপ কিছু সম্পর্কে চিন্তা করছি pairs।


17
এছাড়াও ggally খুঁজে বার করো
— হ্যাডলি

1
আহ, আমি আপনার মন্তব্য সেখানে দেখেছি। আমি আপনার
— জবাবটি সিডাব্লু করে

উত্তর:


37

আপনি প্লটমেট্রিক্স চেষ্টা করতে চাইতে পারেন:

  library(ggplot2)
  data(mtcars)
  plotmatrix(mtcars[,1:3])

আমার কাছে এমপিজি (এমটিকার্সে প্রথম কলাম) কোনও উপাদান নয়। আমি এটি পরীক্ষা করে দেখিনি, তবে এটির কারণ হওয়ার কোনও কারণ নেই। তবে আমি একটি বিচ্ছুরিত প্লট পেয়েছি :)


দ্রষ্টব্য: ভবিষ্যতের রেফারেন্সের জন্য, @ naught101 এই প্রশ্নের নীচে অন্য প্রতিক্রিয়াতে প্রস্তাবিত হিসাবে প্যাকেজটি থেকে ফাংশনটি plotmatrix()প্রতিস্থাপিত হয়েছে ।ggpairs()GGally


আমি এই সমস্যায় কাজ করতে পারিনি, মনে হচ্ছে এটি সূত্রের ডানদিকে কারক প্রয়োজন .. বা আপনি আমাকে একটি ন্যূনতম উদাহরণ দিতে পারেন?
— কার্স্টেন ডব্লিউ।

1
কেউ কীভাবে রঙ যুক্ত করতে জানেন? আমি এই gist.github.com/1405150 কাজ করতে সক্ষম হতে পারে বলে মনে হচ্ছে না
— এটিয়েন লো-

1
এই উত্তরের প্রথম অংশটি ভুল, এবং বিভ্রান্তির কারণ। মুখোমুখি হয়ে আপনি জোড় প্লট করতে পারবেন না: আপনি কেবল এক্স প্লট দ্বারা y করতে পারবেন, এবং কারণগুলি অনুসারে এগুলিকে গ্রুপ করতে পারেন। অন্য কথায়, মুখোমুখি হওয়ার সাথে আপনার প্রতিটি উপ-প্লটে একই x এবং y রয়েছে; জোড়া সহ, আপনার প্রতিটি কলামে আলাদা আলাদা এক্স এবং প্রতিটি সারিতে আলাদা y রয়েছে।
— nnot101

28
ভবিষ্যতের রেফারেন্সের জন্য, @ nnot101 এই প্রশ্নের অন্য প্রতিক্রিয়াতে প্রস্তাবিত হিসাবে প্যাকেজটি থেকে ফাংশনটি plotmatrix()প্রতিস্থাপিত হয়েছে । ggpairs()GGally
— স্মিলিগ

1
@ ম্যাটব্যানার্ট আপনার পোস্টে এটি আরও দৃশ্যমান করার জন্য মন্তব্যটি যুক্ত করেছে, মন্তব্য পড়তে না পারলে আমি ডাউনভোটারদের বুঝতে পারতাম। আশা করি আপত্তি করবেন না।
— zx8754

232

আমি এটি করতে ইচ্ছুক রাখি, তবে প্লটমেট্রিক্সটি বকাঝকা। হ্যাডলি পরিবর্তে GGally প্যাকেজ ব্যবহার করার পরামর্শ দেয় । এটির একটি ফাংশন রয়েছে, জিগপেইস যা একটি বিশাল উন্নত জোড়া প্লট (আপনাকে আপনার ডেটা ফ্রেমে অ-অবিচ্ছিন্ন ভেরিয়েবলগুলি ব্যবহার করতে দেয়)। এটি ভেরিয়েবলের ধরণের উপর নির্ভর করে প্রতিটি স্কোয়ারে বিভিন্ন প্লট প্লট করে:

library(GGally)
ggpairs(iris, aes(colour = Species, alpha = 0.4))

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


26
এটি সত্যিই দুর্দান্ত। এটি লক্ষণীয় যে কোনও colourপরিবর্তনশীল একটি ফ্যাক্টর হতে হবে; 45 মিনিট ব্যয় করেছেন যে এটি খুঁজে পেয়েছেন।
— গ্রেগম্যাকফার্লেন

1
জোড় ছাড়াই এই পারস্পরিক সম্পর্কের ম্যাট্রিক্স প্লট করার কোনও উপায় আছে? উদাহরণস্বরূপ আমাকে প্রথম কলামটি বনাম প্রতিটি অন্যান্য কলামে প্লট করতে হবে.gppairs খুব সম্ভব জোড়া দেয় For উদাহরণস্বরূপ আমার কাছে 10 টি কলাম রয়েছে এবং এটি আমাকে 10 * 10 = 100. তবে আমি অন্য 9
— টির তুলনায়

1
@ রিজিক: আপনি যে meltআইডি ভেরিয়েবল হিসাবে আগ্রহী সেগুলি ব্যবহার করে আপনি ডেটাফ্রেম করতে পারেন এবং তারপরে অন্যান্য ভেরিয়েবলগুলির দ্বারা মুখোমুখি হতে পারেন ।
— ননট 101

6
Ggpairs ব্যবহার করবেন না, শুধু স্বাভাবিকভাবে ggplot2 ব্যবহার করেন, মত ggplot(data, aes(x=id, y=value)) + geom_point() + facet_grid(.~variable)। আমি ধরে নিচ্ছি আপনি "পারস্পরিক সম্পর্ক প্লট" বলার সময় আপনি স্ক্যাটার প্লটের কথা বলছেন, কারণ আমি এর আগে কখনও শুনিনি।
— nnot101

3
@ জিমগ্রিন GGally::ggpairs(iris, aes(colour = Species, alpha=0.4))
— এলবুলপি

17

যদি কেউ কোনও ggplotঅবজেক্ট পেতে চায় ( ggmatrixযেমনটি হয় না ggpairs()) তবে সমাধানটি হ'ল তথ্যকে দু'বার গলিয়ে ফেলা, তারপরে ggplotফেসটিংয়ের মাধ্যমে। প্যারামিটার সরবরাহ করা থাকলে প্লট করা অঞ্চল সীমাবদ্ধ করার facet_wrapচেয়ে ভাল হবে ।facet_gridscales = 'free'

require(ggplot2) 
require(dplyr)
require(tidyr)

gatherpairs <- function(data, ..., 
                        xkey = '.xkey', xvalue = '.xvalue',
                        ykey = '.ykey', yvalue = '.yvalue',
                        na.rm = FALSE, convert = FALSE, factor_key = FALSE) {
  vars <- quos(...)
  xkey <- enquo(xkey)
  xvalue <- enquo(xvalue)
  ykey <- enquo(ykey)
  yvalue <- enquo(yvalue)

  data %>% {
    cbind(gather(., key = !!xkey, value = !!xvalue, !!!vars,
                 na.rm = na.rm, convert = convert, factor_key = factor_key),
          select(., !!!vars)) 
  } %>% gather(., key = !!ykey, value = !!yvalue, !!!vars,
               na.rm = na.rm, convert = convert, factor_key = factor_key)
}

iris %>% 
  gatherpairs(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) %>% {
  ggplot(., aes(x = .xvalue, y = .yvalue, color = Species)) +
      geom_point() + 
      geom_smooth(method = 'lm') +
      facet_wrap(.xkey ~ .ykey, ncol = length(unique(.$.ykey)), scales = 'free', labeller = label_both) +
      scale_color_brewer(type = 'qual')
}

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

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