本内容为【科研私家菜】R可视化之美之科研绘图系列课程
快来收藏关注【科研私家菜】
01 高密度散点图
当数据点重叠很严重时,用散点图来观察变量关系非常不明显,下面构造10 000个观测点,显示它们分布在两个重叠的数据群中的情况:
10 000个观测点的散点图,严重的重叠导致很难识别哪里数据点的密度最大,数据点的重叠导致识别x与y间的关系变得异常困难,R提供了一些解决办法。你可以使用封箱、颜色和透明度来指明图中任意点上重叠点的数目。smoothScatter()函数可利用核密度估计生成用颜色密度来表示点分布的散点图:
with(mydata, smoothScatter(x, y, main="Scatter Plot Colored by Smoothed Densities"))
set.seed(1234)
n <- 10000
c1 <- matrix(rnorm(n, mean=0, sd=.5), ncol=2)
c2 <- matrix(rnorm(n, mean=3, sd=2), ncol=2)
mydata <- rbind(c1, c2)
mydata <- as.data.frame(mydata)
names(mydata) <- c("x", "y")
with(mydata, plot(x, y, pch=19, main="Scatter Plot with 10,000 Observations"))
效果如下:
02 带透明度设置的散点图
library(ggplot2)
library(RColorBrewer)
mydata<-read.csv("HighDensity_Scatter_Data.csv",stringsAsFactors=FALSE)
ggplot(data = mydata, aes(x,y)) +
geom_point( colour="black",alpha=0.1)+
labs(x = "Axis X",y="Axis Y")+
theme(
text=element_text(size=15,color="black"),
plot.title=element_text(size=15,family="myfont",face="bold.italic",hjust=.5,color="black"),
legend.position="none"
)
效果如下:
03 kmeans聚类的散点图
kmeansResult<- kmeans(mydata, 2, nstart = 20)
mydata$cluster <- as.factor(kmeansResult$cluster)
ggplot(data = mydata, aes(x,y,color=cluster)) +
geom_point( alpha=0.2)+
scale_color_manual(values=c("#00AFBB", "#FC4E07"))+
labs(x = "Axis X",y="Axis Y")+
theme(
text=element_text(size=15,color="black"),
plot.title=element_text(size=15,family="myfont",face="bold.italic",color="black"),
legend.background=element_blank(),
legend.position=c(0.85,0.15)
)
效果如下:
04 带椭圆标定的聚类散点图
ggplot(data = mydata, aes(x,y,color=cluster)) +
geom_point (alpha=0.2)+
# 绘制透明度为0.2 的散点图
stat_ellipse(aes(x=x,y=y,fill= cluster), geom="polygon", level=0.95, alpha=0.2) +
#绘制椭圆标定不同类别,如果省略该语句,则绘制图3-1-7(c)
scale_color_manual(values=c("#00AFBB","#FC4E07")) +#使用不同颜色标定不同数据类别
scale_fill_manual(values=c("#00AFBB","#FC4E07"))+ #使用不同颜色标定不同椭类别
labs(x = "Axis X",y="Axis Y")+
theme(
text=element_text(size=15,color="black"),
plot.title=element_text(size=15,family="myfont",face="bold.italic",color="black"),
legend.background=element_blank(),
legend.position=c(0.85,0.15)
)
效果如下:
参考资料
《R语言数据可视化之美》
关注R小盐,关注科研私家菜(溦❤工众號: SciPrivate),有问题请联系R小盐。让我们一起来学习 R可视化之美之科研绘图