tôi đã sử dụng ggpairs để tạo ra âm mưu này: Cách tốt nhất để làm một cốt truyện tương quan-ma trận như thế này là gì?
Và đây là đoạn code cho nó:
#load packages
library("ggplot2")
library("GGally")
library("plyr")
library("dplyr")
library("reshape2")
library("tidyr")
#generate example data
dat <- data.frame(replicate(6, sample(1:5, 100, replace=TRUE)))
dat[,1]<-as.numeric(dat[,1])
dat[,2]<-as.numeric(dat[,2])
dat[,3]<-as.numeric(dat[,3])
dat[,4]<-as.numeric(dat[,4])
dat[,5]<-as.numeric(dat[,5])
dat[,6]<-as.numeric(dat[,6])
#ggpairs-plot
main<-ggpairs(data=dat,
lower=list(continuous="smooth", params=c(colour="blue")),
diag=list(continuous="bar", params=c(colour="blue")),
upper=list(continuous="cor",params=c(size = 6)),
axisLabels='show',
title="correlation-matrix",
columnLabels = c("Item 1", "Item 2", "Item 3","Item 4", "Item 5", "Item 6")) + theme_bw() +
theme(legend.position = "none",
panel.grid.major = element_blank(),
axis.ticks = element_blank(),
panel.border = element_rect(linetype = "dashed", colour = "black", fill = NA))
main
Tuy nhiên, mục tiêu của tôi là, để có được một cốt truyện như thế này:
Cốt truyện này là một ví dụ và tôi đã tạo ra nó với ba mã ggplot sau.
tôi sử dụng này cho những âm mưu geom_point:
#------------------------
#lower/geom_point with jitter
#------------------------
#dataframe
df.point <- na.omit(data.frame(cbind(x=dat[,1], y=dat[,2])))
#plot
scatter <- ggplot(df.point,aes(x, y)) +
geom_jitter(position = position_jitter(width = .25, height= .25)) +
stat_smooth(method="lm", colour="black") +
theme_bw() +
scale_x_continuous(labels=NULL, breaks = NULL) +
scale_y_continuous(labels=NULL, breaks = NULL) +
xlab("") +ylab("")
scatter
này mang đến cho cốt truyện sau:
tôi sử dụng này cho Barplot:
#-------------------------
#diag./BARCHART
#------------------------
bar.df<-as.data.frame(table(dat[,1],useNA="no"))
#Barplot
bar<-ggplot(bar.df) + geom_bar(aes(x=Var1,y=Freq),stat="identity") +
theme_bw() +
scale_x_discrete(labels=NULL, breaks = NULL) +
scale_y_continuous(labels=NULL, breaks = NULL, limits=c(0,max(bar.df$Freq*1.05))) +
xlab("") +ylab("")
bar
này cho cốt truyện sau :
Và tôi sử dụng này cho Correlation-Hệ số:
#----------------------
#upper/geom_tile and geom_text
#------------------------
#correlations
df<-na.omit(dat)
df <- as.data.frame((cor(df[1:ncol(df)])))
df <- data.frame(row=rownames(df),df)
rownames(df) <- NULL
#Tile to plot (as example)
test<-as.data.frame(cbind(1,1,df[2,2])) #F09_a x F09_b
colnames(test)<-c("x","y","var")
#Plot
tile<-ggplot(test,aes(x=x,y=y)) +
geom_tile(aes(fill=var)) +
geom_text(data=test,aes(x=1,y=1,label=round(var,2)),colour="White",size=10,show_guide=FALSE) +
theme_bw() +
scale_y_continuous(labels=NULL, breaks = NULL) +
scale_x_continuous(labels=NULL, breaks = NULL) +
xlab("") +ylab("") + theme(legend.position = "none")
tile
này cung cấp cho các Lô sau:
Câu hỏi của tôi là: cách tốt nhất để có được cốt truyện là gì, mà tôi muốn? Tôi muốn hình dung các món đồ từ một bảng câu hỏi và theo ý kiến của tôi, đây là một cách rất hay để làm điều này. Có thể sử dụng ggpairs cho điều này mà không sản xuất mọi âm mưu của riêng mình, giống như tôi đã làm với ggpairs-cốt truyện được lưu giữ. Hay có cách nào khác để làm điều này?
Cách dễ dàng hơn, quấn mã của bạn trong một hàm (3 đây cho từng lô), vì sử dụng 'gridExtra' gói để sắp xếp lô của bạn. Ví dụ, bạn có thể đặt các ô của bạn trong một danh sách, sau đó chỉ cần gọi điều này: 'do.call (" grid.arrange ", c (plist, ncol = 3, nrow = 3))' – agstudy