2015-11-10 7 views
2

Я хочу начать с того, что я новичок в R и особенно на этом веб-сайте, поэтому, если необходимо, чтобы я разъяснил все здесь, пожалуйста, дайте мне знать! Я все еще не совсем понимаю, поэтому, пожалуйста, не стесняйтесь, как можно дальше.PCA Земельные участки в ggplot2: изменение цвета точек и изменение цвета рамки/эллипса вокруг точек

Вопрос: Я хочу создать графики 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

+1

Я не могу установить ggbiplot прямо сейчас, но вы пытались передать scale_color_manual (ваши 3 пользовательские значения здесь)? –

+1

И 'scale_fill_manual' для фреймов. Множество примеров для ggplot2, просто выполните поиск, например, «ggplot2 вручную установите цвета». Вы можете отредактировать свой вопрос, чтобы было ясно, что используемый вами код полагается на * ggfortify *, а не на любой другой пакет (насколько я могу судить). – aosmith

+0

Спасибо @aosmith! Это предложение, которое вы дали, было идеально! Я опубликовал решение, которое я пришел ниже. –

ответ

1

Я сделал то же самое 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 для кадра

EDIT

Я думал, что добавление рамки должно быть легче, проверьте здесь 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_manual и scale_fill_manual, не могли бы вы обновить свой вопрос, который не сработает?

+0

Я думал, что добавление рамки должно быть проще, посмотрите здесь http://stats.stackexchange.com/questions/22805/how-to-draw-neat-polygons-around-scatterplot-regions-in-ggplot2 –

+0

Спасибо @Matias ! У меня есть ваши использованные предложения 'scale_ color_manual' и' scale_fill_manual' для моего решения. Это было именно то, что мне нужно! –

1

Удивительный соус!

Ответ был не совсем скрыт в этих примерах, но я нашел 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

спасибо за помощь! Очень благодарен за эту небольшую (или, скорее, исключительно большую) группу!

Смежные вопросы