在 R 包 FactoExtra 的 fviz_pca 中指定颜色和形状图例
Specify color and shape legend in fviz_pca from the R package FactoExtra
当有两个组变量时,例如下面修改iris
数据集(添加一个因子变量Site):
SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species Site
5.1 3.5 1.4 0.2 Iris-setosa A
4.9 3 1.4 0.2 Iris-setosa A
4.7 3.2 1.3 0.2 Iris-setosa A
4.6 3.1 1.5 0.2 Iris-setosa A
5 3.6 1.4 0.2 Iris-setosa A
5.4 3.9 1.7 0.4 Iris-setosa A
5.2 3.4 1.4 0.2 Iris-setosa A
4.7 3.2 1.6 0.2 Iris-setosa A
4.8 3.1 1.6 0.2 Iris-setosa A
7 3.2 4.7 1.4 Iris-versicolor A
6.4 3.2 4.5 1.5 Iris-versicolor A
6.9 3.1 4.9 1.5 Iris-versicolor A
5.5 2.3 4 1.3 Iris-versicolor A
6.5 2.8 4.6 1.5 Iris-versicolor A
5.7 2.8 4.5 1.3 Iris-versicolor B
6.3 3.3 4.7 1.6 Iris-versicolor B
4.9 2.4 3.3 1 Iris-versicolor B
6.6 2.9 4.6 1.3 Iris-versicolor B
5.2 2.7 3.9 1.4 Iris-versicolor B
6.3 3.3 6 2.5 Iris-virginica B
5.8 2.7 5.1 1.9 Iris-virginica B
7.1 3 5.9 2.1 Iris-virginica B
6.3 2.9 5.6 1.8 Iris-virginica B
6.5 3 5.8 2.2 Iris-virginica B
7.6 3 6.6 2.1 Iris-virginica B
4.9 2.5 4.5 1.7 Iris-virginica B
7.3 2.9 6.3 1.8 Iris-virginica B
6.7 2.5 5.8 1.8 Iris-virginica B
7.2 3.6 6.1 2.5 Iris-virginica B
我愿意:
1)将点颜色映射到 Iris$Species,将点形状映射到 Iris$site;
2) 将图例标题更改为“颜色”或“形状”。
我使用的代码:
library(factoextra)
data(Iris)
res.pca <- PCA(Iris[,1:4], graph = F)
fviz_pca_biplot(res.pca,
#individuals
geom.ind="point",
col.ind=Iris$Species,
pointshape=Iris$Site,
#variables
col.var="steelblue")
当我使用 pointshape=Iris$Site
时出现错误
Error: Aesthetics must be either length 1 or the same as the data (3): shape
1) 我应该如何将各个点映射到多个不同的组?
2) 如何编辑图例标题?
因为ggbiplot
基于ggplot()
对象,您可以使用geom_point
手动添加点和形状,
iris.pca <- PCA(iris[,1:4], graph = F)
fviz_pca_biplot(iris.pca,obs.scale = 1, var.scale = 1, alpha=0, col.var="steelblue") +
geom_point(aes(shape = factor(iris$Site), colour = factor(iris$Species))) +
guides(shape = guide_legend(title = "shape"),
colour = guide_legend(title = "color"))
当有两个组变量时,例如下面修改iris
数据集(添加一个因子变量Site):
SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species Site
5.1 3.5 1.4 0.2 Iris-setosa A
4.9 3 1.4 0.2 Iris-setosa A
4.7 3.2 1.3 0.2 Iris-setosa A
4.6 3.1 1.5 0.2 Iris-setosa A
5 3.6 1.4 0.2 Iris-setosa A
5.4 3.9 1.7 0.4 Iris-setosa A
5.2 3.4 1.4 0.2 Iris-setosa A
4.7 3.2 1.6 0.2 Iris-setosa A
4.8 3.1 1.6 0.2 Iris-setosa A
7 3.2 4.7 1.4 Iris-versicolor A
6.4 3.2 4.5 1.5 Iris-versicolor A
6.9 3.1 4.9 1.5 Iris-versicolor A
5.5 2.3 4 1.3 Iris-versicolor A
6.5 2.8 4.6 1.5 Iris-versicolor A
5.7 2.8 4.5 1.3 Iris-versicolor B
6.3 3.3 4.7 1.6 Iris-versicolor B
4.9 2.4 3.3 1 Iris-versicolor B
6.6 2.9 4.6 1.3 Iris-versicolor B
5.2 2.7 3.9 1.4 Iris-versicolor B
6.3 3.3 6 2.5 Iris-virginica B
5.8 2.7 5.1 1.9 Iris-virginica B
7.1 3 5.9 2.1 Iris-virginica B
6.3 2.9 5.6 1.8 Iris-virginica B
6.5 3 5.8 2.2 Iris-virginica B
7.6 3 6.6 2.1 Iris-virginica B
4.9 2.5 4.5 1.7 Iris-virginica B
7.3 2.9 6.3 1.8 Iris-virginica B
6.7 2.5 5.8 1.8 Iris-virginica B
7.2 3.6 6.1 2.5 Iris-virginica B
我愿意:
1)将点颜色映射到 Iris$Species,将点形状映射到 Iris$site;
2) 将图例标题更改为“颜色”或“形状”。
我使用的代码:
library(factoextra)
data(Iris)
res.pca <- PCA(Iris[,1:4], graph = F)
fviz_pca_biplot(res.pca,
#individuals
geom.ind="point",
col.ind=Iris$Species,
pointshape=Iris$Site,
#variables
col.var="steelblue")
pointshape=Iris$Site
Error: Aesthetics must be either length 1 or the same as the data (3): shape
1) 我应该如何将各个点映射到多个不同的组?
2) 如何编辑图例标题?
因为ggbiplot
基于ggplot()
对象,您可以使用geom_point
手动添加点和形状,
iris.pca <- PCA(iris[,1:4], graph = F)
fviz_pca_biplot(iris.pca,obs.scale = 1, var.scale = 1, alpha=0, col.var="steelblue") +
geom_point(aes(shape = factor(iris$Site), colour = factor(iris$Species))) +
guides(shape = guide_legend(title = "shape"),
colour = guide_legend(title = "color"))