ggplot2中的PCA图:改变点颜色并改变点周围的框架/椭圆的颜色

时间:2015-11-10 22:02:28

标签: r ggplot2 pca

我想首先说我是R的新手用户,特别是本网站的用户,所以如果有必要在此解释一下,请告诉我!我还没有完全了解所有内容,所以请随意“愚蠢”#34;尽可能。

问题:我想创建描绘两组(在本例中为物种)的PCA图。我还想在它们周围绘制椭圆或框架。

谢天谢地,我已经使用ggplot2完成了这项任务! 但是,我无法更改超出默认值的点或椭圆/帧的颜色。

请你就此事提供一些帮助吗?

请参阅下面的示例代码,它只是PCA示例中常用的传统虹膜数据集。

###load in plackages###
library(ggbiplot)
library(ggfortify)
library(cluster)

#my actual data is very similar to the iris data, though in my data the     "Species" column is first
head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa
df <- iris[c(1, 2, 3, 4)]
autoplot(prcomp(df))
autoplot(prcomp(df), data = iris, colour = 'Species') #pca graph with   species depicted in different colors

PCA GRAPH OF SPECIES DEPICTED IN DIFFERENT COLORS

autoplot(prcomp(df), data = iris, colour = 'Species', shape='Species', frame=T) 

PCA GRAPH WITH FRAMES AROUND POINTS

2 个答案:

答案 0 :(得分:6)

我做了同样的PCA

data<-iris
df<-iris[c(1, 2, 3, 4)]
PC<-prcomp(df)
PCi<-data.frame(PC$x,Species=data$Species)

现在您执行常规绘图并像往常一样更改ggplot参数

ggplot(PCi,aes(x=PC1,y=PC2,col=Species))+
   geom_point(size=3,alpha=0.5)+ #Size and alpha just for fun
   scale_color_manual(values = c("#FF1BB3","#A7FF5B","#99554D"))+ #your colors here
   theme_classic()

enter image description here

另外,请检查scale_fill_manual的框架

修改

我认为添加框架应该更容易,请点击此处https://stats.stackexchange.com/questions/22805/how-to-draw-neat-polygons-around-scatterplot-regions-in-ggplot2
和这里 ggplot2: geom_polygon with no fill

另外,我仍然认为ggbiplot应该处理scale_color_manualscale_fill_manual,你能否更新失败的问题?

答案 1 :(得分:2)

真棒酱!

答案在这些例子中并没有完全隐藏,但我发现scale_color_manual和scale_fill_manual完全符合我的要求:将帧更改为任何可以想象的颜色!

#using autoplot from earlier, I placed it into an object
a<-autoplot(prcomp(df), data = iris, colour = 'Species', shape='Species', frame=T)
#then I added on scale_color_manual and scale_fill_manual with the wacky color combos that would never be publishable 
a + scale_fill_manual(values = c("#FF1BB3","#A7FF5B","#99554D")) + scale_color_manual(values = c("black","white","orange")) 

PCA GRAPH WITH DIFFERENT COLORS

非常感谢你的帮助!非常感谢在这里拥有这个小团队(或者说特别大的团队)!