একটি গ্রাফে প্লট পারস্পরিক সম্পর্ক ম্যাট্রিক্স


93

আমার কিছু পারস্পরিক সম্পর্কের মান সহ একটি ম্যাট্রিক্স রয়েছে। এখন আমি এমন একটি গ্রাফে প্লট করতে চাই যা দেখতে কম বেশি দেখায়:

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

আমি কীভাবে এটি অর্জন করতে পারি?


: আপনি এই ফাংশন আকর্ষণীয় হতে পারে gist.github.com/low-decarie/5886616 এটি এখনও (উন্নত করা প্রয়োজন যদিও stackoverflow.com/questions/17370853/... )
Etienne কম Décarie

@ এ্যান আপনি কি এর জন্য কোডটি ভাগ করতে পারবেন? আমি আমার উপস্থাপনাটির জন্য ঠিক এটিই খুঁজছি
পাভলোস প্যান্তেলিয়াদিস

উত্তর:


57

দ্রুত, নোংরা এবং বলপার্কে:

library(lattice)

#Build the horizontal and vertical axis information
hor <- c("214", "215", "216", "224", "211", "212", "213", "223", "226", "225")
ver <- paste("DM1-", hor, sep="")

#Build the fake correlation matrix
nrowcol <- length(ver)
cor <- matrix(runif(nrowcol*nrowcol, min=0.4), nrow=nrowcol, ncol=nrowcol, dimnames = list(hor, ver))
for (i in 1:nrowcol) cor[i,i] = 1

#Build the plot
rgb.palette <- colorRampPalette(c("blue", "yellow"), space = "rgb")
levelplot(cor, main="stage 12-14 array correlation matrix", xlab="", ylab="", col.regions=rgb.palette(120), cuts=100, at=seq(0,1,0.01))

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


4
এটি ওপি (ফন্ট, রঙ, লেআউট) থেকে উদাহরণের সাথে খুব মিল দেখাচ্ছে। দেখে মনে হচ্ছে আসলটিও জাল দিয়ে তৈরি হয়েছিল। দুর্দান্ত বিস্তারিত উত্তর, +1।
মারেক

4
উত্তরের জন্য ধন্যবাদ. নীচের বাম থেকে উপরের ডান বর্গক্ষেত্রের পরিবর্তে উপরের বাম থেকে নীচে ডান বর্গাকারে 1-s সংবলিত তির্যকটি উপরের বাম দিক থেকে বাম দিকে উপরের ডান চৌকোতে চলে যায় এমন অনেকগুলি প্লটগুলির সাথে সম্পর্ক স্থাপনের জন্য অনেকগুলি ব্যবহার করা হয় সমাধান। এই সমস্যাটি কীভাবে সমাধান করবেন তা এখানে: Cor_reversed <- প্রয়োগ (কর, 2, রেভ); levelplot (T (cor_reversed), ...)
লাফালাফি

@ বিল_080 কেন আপনার কোড অনুলিপি-সংযুক্তি ম্যাট্রিক্স মুদ্রণ করবে?
পাভলোস পানতেলিদিস

59

বরং "কম" দেখতে দেখতে, তবে চেক করার মতো (আরও ভিজ্যুয়াল তথ্য দেওয়ার মতো):

সংশ্লেষন ম্যাট্রিক্স উপবৃত্ত : সম্পর্কযুক্ত ম্যাট্রিক্স উপবৃত্ত সংশ্লেষন ম্যাট্রিক্স চেনাশোনা : সম্পর্ক ম্যাট্রিক্স চেনাশোনা

নীচে @Asslias দ্বারা রেফারেন্সযুক্ত করপ্ল্লট ভিগনেটে আরও উদাহরণগুলি আবিষ্কার করুন ।


4
সাইটটি অবরুদ্ধ বলে মনে হচ্ছে। প্রথম প্লটের জন্য আপনার কাছে কোনও কোড বা প্যাকেজ বিবরণ রয়েছে?
উজ্জ্বল-তারকা

4
@ ট্রেভর অ্যালেক্সান্ডার: যতদূর আমার মনে আছে প্রথম প্লটটি তৈরি করেছিল ellipse:plotcorr
daroczig

আমি লিঙ্ক 1 এর জন্য একটি সম্পাদনা জমা দিয়েছি: উন্নতি- visualisation.org/vis/id=250 যা একই চিত্র সরবরাহ করে।
রাসেলপিয়ার্স

4
আপনাকে ধন্যবাদ @ রিপিয়ার্স, যদিও আমি সেখানে কেবলমাত্র উত্সটি আর উত্স ছাড়াই দেখতে পাচ্ছি। আমি এখানে কি মিস করি?
দারোকজিগ



30

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

library(ggplot2)
library(reshape)

z <- cor(mtcars)
z.m <- melt(z)

ggplot(z.m, aes(X1, X2, fill = value)) + geom_tile() + 
scale_fill_gradient(low = "blue",  high = "yellow")

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

সম্পাদনা :

ggplot(z.m, aes(X1, X2, fill = value)) + geom_tile() + 
scale_fill_gradient2(low = "blue",  high = "yellow")

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

মিডপয়েন্টের রঙ নির্দিষ্ট করতে দেয় এবং এটি ডিফল্ট হোয়াইট তাই এখানে একটি সুন্দর সমন্বয় হতে পারে। অন্যান্য বিকল্পগুলি এখানে এবং এখানে ggplot ওয়েবসাইটে পাওয়া যাবে


সুন্দর (+1)! যদিও আমি মাঝখানে একটি ম্যানুয়াল-ব্রেক স্কেল যুক্ত করব (উদাহরণস্বরূপ c(-1, -0.6, -0.3, 0, 0.3, 0.6, 1):) "white"রঙগুলি পারস্পরিক সম্পর্কের প্রতিসাম্যকে প্রতিফলিত করতে দেয়।
daroczig

@ দারোকজিগ - ভাল পয়েন্ট দেখে মনে হচ্ছে scale_fill_gradient2()আপনি স্বয়ংক্রিয়ভাবে বর্ণনা করা কার্যকারিতা অর্জন করেছেন। আমি জানতাম না যে অস্তিত্ব আছে।
চেজ

4
এটি যুক্ত করে: p <- ggplot(.....) + ... + ....; library(plotly); ggplotly(p)এটি ইন্টারেক্টিভ করে
তুলবে

তির্যক 1 এর নীচে বাম থেকে ডানে যেতে তৈরি করতে হলে, ফ্যাক্টর স্তরের উলটাপালটা জন্য প্রয়োজন X1ব্যবহার করছে:z.m$X1 <- factor(z.m$X1, levels = rev(levels( z.m$X1 )))
অরুণ

12

কর্প্লোট প্যাকেজটি ব্যবহার করুন:

library(corrplot)
data(mtcars)
M <- cor(mtcars)
##  different color series
col1 <- colorRampPalette(c("#7F0000","red","#FF7F00","yellow","white", 
        "cyan", "#007FFF", "blue","#00007F"))
col2 <- colorRampPalette(c("#67001F", "#B2182B", "#D6604D", "#F4A582", "#FDDBC7",
        "#FFFFFF", "#D1E5F0", "#92C5DE", "#4393C3", "#2166AC", "#053061"))  
col3 <- colorRampPalette(c("red", "white", "blue")) 
col4 <- colorRampPalette(c("#7F0000","red","#FF7F00","yellow","#7FFF7F", 
        "cyan", "#007FFF", "blue","#00007F"))   
wb <- c("white","black")


par(ask = TRUE)


## different color scale and methods to display corr-matrix
corrplot(M, method="number", col="black", addcolorlabel="no")
corrplot(M, method="number")
corrplot(M)
corrplot(M, order ="AOE")
corrplot(M, order ="AOE", addCoef.col="grey")

corrplot(M, order="AOE", col=col1(20), cl.length=21,addCoef.col="grey")
corrplot(M, order="AOE", col=col1(10),addCoef.col="grey")

corrplot(M, order="AOE", col=col2(200))
corrplot(M, order="AOE", col=col2(200),addCoef.col="grey")
corrplot(M, order="AOE", col=col2(20), cl.length=21,addCoef.col="grey")
corrplot(M, order="AOE", col=col2(10),addCoef.col="grey")

corrplot(M, order="AOE", col=col3(100))
corrplot(M, order="AOE", col=col3(10))



corrplot(M, method="color", col=col1(20), cl.length=21,order = "AOE", addCoef.col="grey")

if(TRUE){

corrplot(M, method="square", col=col2(200),order = "AOE")

corrplot(M, method="ellipse", col=col1(200),order = "AOE")


corrplot(M, method="shade", col=col3(20),order = "AOE")

corrplot(M, method="pie", order = "AOE")


## col=wb
corrplot(M, col = wb, order="AOE", outline=TRUE, addcolorlabel="no")
## like Chinese wiqi, suit for either on screen or white-black print.
corrplot(M, col = wb, bg="gold2",  order="AOE", addcolorlabel="no")
}

উদাহরণ স্বরূপ:

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

বরং মার্জিত আইএমও


9

এই ধরণের গ্রাফকে অন্যান্য শর্তগুলির মধ্যে একটি "তাপের মানচিত্র" বলা হয়। আপনি একবার আপনার সম্পর্কের ম্যাট্রিক্স পেয়ে গেলে বিভিন্ন টিউটোরিয়াল ব্যবহার করে এটির পরিকল্পনা করুন।

বেস গ্রাফিক্স ব্যবহার: http://flowingdata.com/2010/01/21/how-to-make-a-heatmap-a-quick-and-easy-solution/

Ggplot2 ব্যবহার করে: http://learnr.wordpress.com/2010/01/26/ggplot2-quick-heatmap-plotting/


আমি এটিকে 'হিটম্যাপ' বলা মোটামুটি আধুনিক আবিষ্কার কিনা তা নিশ্চিত নই। আপনি যদি একটি লাল-কমলা-হলুদ রঙের স্কিম ব্যবহার করে 'হটস্পট' দেখানোর চেষ্টা করছেন তবে সাধারণভাবে এটি কেবল একটি চিত্রের প্লট, বা কোনও ম্যাট্রিক্স প্লট, বা একটি রাস্টার প্লট রয়েছে তা বোধগম্য বলে মনে হচ্ছে। আমি সেই প্রাচীনতম রেফারেন্সটি খুঁজতে আগ্রহী যা একে 'হিটম্যাপ' বলে। tldr; "[উদ্ধৃতি আবশ্যক]"
স্পেসডম্যান

আমি মনে করি আপনি ঠিক বলেছেন যে তাপের মানচিত্র এটির জন্য প্রথম দিকের নাম নয়। উইকিপিডিয়া ১৯৫7 সালের একটি কাগজ তালিকাভুক্ত করে, তবে আমি সেই কাগজটি পরীক্ষা করেছিলাম এবং "তাপের মানচিত্র" শব্দটি এর কোথাও উপস্থিত হয় না (গ্রাফিকগুলি বর্তমান ফর্মের মতো দেখতেও লাগে না)।
এরি বি ফ্রেডম্যান

5

আমি প্যাকেজটির plotcorr()কার্যকারিতাটি ব্যবহার করে @ উড়িকের দ্বারা পোস্ট করা কোড সহ @ দাদারোকজিগ পোস্ট করা ভিজ্যুয়ালাইজেশনের অনুরূপ কিছু নিয়ে কাজ করছি ellipse। আমি পারস্পরিক সম্পর্ককে উপস্থাপন করতে উপবৃত্তাকার ব্যবহার এবং নেতিবাচক এবং ধনাত্মক পারস্পরিক সম্পর্ককে উপস্থাপন করার জন্য রঙের ব্যবহার পছন্দ করি। তবে, আমি চেয়েছিলাম যে আকর্ষণীয় রংগুলি 1 এবং -1 এর কাছাকাছি পারস্পরিক সম্পর্কের জন্য দাঁড়ায়, 0-এর কাছের লোকদের জন্য নয়।

আমি একটি বিকল্প তৈরি করেছি যাতে রঙিন বৃত্তগুলিতে সাদা উপবৃত্তগুলি আবৃত থাকে। প্রতিটি সাদা উপবৃত্তাকে আকার দেওয়া হয় যাতে এর পিছনে দৃশ্যমান রঙিন বৃত্তের অনুপাত স্কোয়ার পারস্পরিক সম্পর্কের সমান হয়। যখন পারস্পরিক সম্পর্ক 1 এবং -1 এর কাছাকাছি হয়, তখন সাদা উপবৃত্তটি ছোট হয় এবং রঙিন বৃত্তের বেশিরভাগ অংশ দৃশ্যমান হয়। যখন পারস্পরিক সম্পর্ক 0 এর কাছাকাছি হয়, তখন সাদা উপবৃত্ত বড় হয় এবং রঙিন বৃত্তের কিছুটা দৃশ্যমান হয়।

ফাংশনটি, https://github.com/JVAdams/jvamisc/blob/master/R/plotcor.rplotcor() এ উপলব্ধ ।

mtcarsডেটাसेट ব্যবহার করে ফলাফলের প্লটের উদাহরণ নীচে দেখানো হয়েছে।

library(plotrix)
library(seriation)
library(MASS)
plotcor(cor(mtcars), mar=c(0.1, 4, 4, 0.1))

প্লটকার () ফাংশনে কল করার ফলাফল


3

আমি বুঝতে পারি যে এটি কিছুক্ষণ হয়ে গেছে, তবে নতুন পাঠকরা প্যাকেজটি rplot()থেকে আগ্রহী হতে পারেন corrr( https://cran.rstudio.com/web/packages/corrr/index.html ), যা @aroczig উল্লেখ করে বিভিন্ন ধরণের প্লট তৈরি করতে পারে , তবে ডেটা পাইপলাইন পদ্ধতির জন্য নকশা করুন:

install.packages("corrr")
library(corrr)
mtcars %>% correlate() %>% rplot()

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

mtcars %>% correlate() %>% rearrange() %>% rplot()

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

mtcars %>% correlate() %>% rearrange() %>% rplot(shape = 15)

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

mtcars %>% correlate() %>% rearrange() %>% shave() %>% rplot(shape = 15)

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

mtcars %>% correlate() %>% rearrange(absolute = FALSE) %>% rplot(shape = 15)

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


2

Corrplot () থেকে ফাংশন corrplot আর প্যাকেজ একটি correlogram চক্রান্ত ব্যবহার করা যাবে।

library(corrplot)  
M<-cor(mtcars) # compute correlation matrix
corrplot(M, method="circle")

পারস্পরিক সম্পর্ক মেট্রিক্সের গণনা এবং ভিজ্যুয়ালাইজ করার জন্য বর্ণনা করা বেশ কয়েকটি নিবন্ধ এখানে প্রকাশিত হয়েছে:


1

আমি সম্প্রতি যে আরও সমাধানটি শিখেছি তা হ'ল কিউটিচার্টস প্যাকেজটি দিয়ে তৈরি একটি ইন্টারেক্টিভ হিটম্যাপ ।

install.packages("qtlcharts")
library(qtlcharts)
iplotCorr(mat=mtcars, group=mtcars$cyl, reorder=TRUE)

নীচে ফলাফলের চক্রান্তের একটি স্থির চিত্র রয়েছে image এখানে চিত্র বর্ণনা লিখুন

আপনি আমার ব্লগে ইন্টারেক্টিভ সংস্করণ দেখতে পারেন । সারি, কলাম এবং কক্ষের মানগুলি দেখতে হিটম্যাপের উপরে ঘুরে দেখুন। দল অনুসারে বর্ণযুক্ত চিহ্ন সহ একটি স্ক্র্যাটারপ্লট দেখতে একটি ঘরে ক্লিক করুন (উদাহরণস্বরূপ, সিলিন্ডারের সংখ্যা, 4 টি লাল, 6 সবুজ এবং 8 নীল)। স্ক্যাটারপ্লোতে পয়েন্টগুলির উপরে ঘোরাফেরা সারিটির নাম দেয় (এই ক্ষেত্রে গাড়ীটি তৈরি করা)।


0

যেহেতু আমি কোনও মন্তব্য করতে পারছি না, তাই আমার 2c উত্তরটি দারোকজিগ দ্বারা উত্তর হিসাবে দিতে হবে ...

উপবৃত্তাকার স্ক্যাটার প্লটটি প্রকৃতপক্ষে উপবৃত্ত প্যাকেজ থেকে এসেছে এবং এর সাথে উত্পন্ন হয়েছে:

corr.mtcars <- cor(mtcars)
ord <- order(corr.mtcars[1,])
xc <- corr.mtcars[ord, ord]
colors <- c("#A50F15","#DE2D26","#FB6A4A","#FCAE91","#FEE5D9","white",
            "#EFF3FF","#BDD7E7","#6BAED6","#3182BD","#08519C")   
plotcorr(xc, col=colors[5*xc + 6])

(ম্যান পেজ থেকে)

Corpplot প্যাকেজ এছাড়াও হিসাবে প্রস্তাবিত - এখানে পাওয়া সুন্দর চিত্রের জন্য দরকারী হতে পারে

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