我使用 ggpairs 来生成这个图:
这是它的代码:
#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
但是,我的目标是,得到这样的情节:
该图是一个示例,我使用以下三个 ggplot 代码制作了它。
我将它用于 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
这给出了以下情节:
我将它用于条形图:
#-------------------------
#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
这给出了以下情节:
我将其用于相关系数:
#----------------------
#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
这给出了以下图:
我的问题是:获得我想要的情节的最佳方式是什么?我想从问卷中可视化likert-items,在我看来,这是一种非常好的方法。是否可以在不自己制作每个情节的情况下使用 ggpairs,就像我对自定义 ggpairs-plot 所做的那样。还是有其他方法可以做到这一点?