r语言中马赛克图怎么加颜色

Python017

r语言中马赛克图怎么加颜色,第1张

r语言中马赛克图可以用geom_rect()函数加颜色。马赛克图使用ggplot2包的geom_rect()函数绘制,geom_rect()函数的图层是一层一层叠加得到的,算法复杂,但是灵活性比较强,可根据自己喜好进行修改,用geom_rect()函数绘制马赛克图即可加颜色。

R语言绘制二元聚类图

说明

之前使用k均值方法将数据划分到不同的簇中,但当变量个数大于2时,就无法在二维空间中展示数据聚类的过程,因此可以使用二元聚类图先将变量减少成两个主要成分,然后利用组件(诸如轴线和椭圆)来展示数据聚类的结果。

操作

载入包,绘制二元聚类图

library("cluster")

clusplot(customer,fit$cluster,color = TRUE,shade = TRUE)

二元聚类图

对二元聚类图进行标记并放大:

par(mfrow = c(1,2))

clusplot(customer,fit$cluster,color = TRUE,shade = TRUE)

rect(-0.7,-1.7,2.2,-1.2,border = "orange",lwd = 2)

clusplot(customer,fit$cluster,color = TRUE,xlim = c(-0.7,2.2),ylim =c(-1.7,-1.2))

原理

本节绘制了一个二元聚类图以展示数据聚类的过程,我们首先安装和导入cluster算法包,然后使用clusplot函数绘制customer数据集的二元聚类图,clusplot函数的shade和color参数值均被设置成TRUE,得到一个彩色且带边框的聚类。 在得到的结果图中,可以得知二元聚类使用了两个成分,x轴与y轴涵盖了85.01%的数据点,数据点根据成分1和成分2的取值散落在图中,同一簇内的数据点采用相同的颜色和形状绘制。

我们还使用了rect函数来增加一个矩形框对给定x轴和y轴内的簇进行特别标注,然后调用clusplot函数,设置好xlim与ylim参数的值,将被选中的簇放大到显示以便不好的观测簇内数据点的特征。

R语言将层次聚类中的树分成簇

说明

在聚类树图中可以观测到聚类的层次,但是仍然得不到组的信息,不过我们可以定义一个聚类树图会拥有多少个簇,并控制树的高度以便将树分成不同的组。

操作

接上节的数据hc

将数据分成四组

fit = cutree(hc,4)

检查数据的簇标签

fit

[1] 1 1 2 1 2 1 2 2 1 1 1 2 2 1 1 1 2 1 2 3 4 3 4 3 3 4 4 3 4 4 4 3 3 3 4 4 3 4 4 4 4 4 4 4 3 3 4 4 4 3 4 3 3 4 4 4 3 4 4 3

统计每一个簇中的对象数

table(fit)

fit

1 2 3 4

11 8 16 25

使用红色矩形框可视化矩形的簇

plot(hc,hang = -0.01,cex =0.7)

rect.hclust(hc,k=4,border = "red")

除了使用红色矩形来框来界定簇,还可以使用它对单独某个簇进行标记:

plot(hc,hang = -0.01,cex =0.7)

rect.hclust(hc,k = 4,which = 2,border = "red")

标记特定簇

还可以调用dendextend包,使用不同的颜色来绘制红色矩形框的各个不同聚簇。

根据分支所在的不同簇,对其涂色

library(dendextend)#delete

dend %>% color_branches(k=4) %>% plot(horiz = TRUE,main = "Horizontal Dendrogram")

不同簇不同色

在这些簇周围添加红色矩形框

dend %>% color_branches(k=4) %>% plot(horiz = TRUE,main = "Horizontal Dendrogram")

dend %>% rect.dendrogram(k=4,horiz = TRUE)

最后,在图中添加一条切割线来展示对树的操作结:

dend %>% color_branches(k=4) %>% plot(horiz = TRUE,main = "Horizontal Dendrogram")

dend %>% rect.dendrogram(k=4,horiz = TRUE)

abline(v = heights_per_k.dendrogram(dend)["4"] + .1,lwd = 2,lty = 2,col = "blue")

水平聚类树中绘制分割线