понимание эстетики в ggplot для PCA

#r #ggplot2 #pca

Вопрос:

Я хочу построить график PCA для приведенных ниже данных:

 Samples X Y condition ABC0 -4902321.6 -1166806.4 abc0 A 1964182.5 -182574.88 abc B 3230051.7 -169413.85 abc C 4348087.3 -1412510.48 abc EGH0 -4895769.1 -1279998.8 egh0 E -623590.7 24402.79 egh G -396252.4 -515215.13 egh H 151838.9 857007 egh O -4168497.7 659968.17 o P 4099128.1 -366815.68 prs R 3180839.9 -37730.98 prs S 3713295.7 -374523.83 prs XYZ0 -4768219.8 -540444.8 xyz0 X 188488.4 559643.8 xyz Y -599848.9 1506850.89 xyz Z -521412.4 2438162.17 xyz  

Ниже приведен мой код с использованием ggplot:

 ggplot(data = pca.data, aes(x=X, y=Y,color = condition))   geom_point(size = 3)   geom_text(aes(label = Samples,size=4))  

Я хочу понять часть эстетики. Если я использую label=pca.data$Samples,size=4 не под aes, мой график выглядит по-другому. Как правильно разместить метку под aes в geom_text?

Ответ №1:

ggplot2 использует aes данные для сопоставления значений в вашем фрейме данных с отдельными точками данных. Когда объекты включаются в вызов aes , пакет предполагает, что это вещи, которые будут меняться в течение вашего набора данных, например значения x или y, для которых каждая точка данных имеет разное значение. Когда вы включаете вещи в вызов ggplot за пределами aes , пакет предполагает, что значение фиксировано во всех данных и его не нужно сопоставлять со столбцом.

В своем коде вы сообщили ggplot, что столбцы, представляющие интерес для всех геом, — это x, y и цвет. Затем вы говорите ему, что для точки geom вы хотели бы, чтобы все точки имели размер 3 (потому что это не указано в aes вызове). Затем вы говорите ему, что для метки geom вы хотели бы сопоставить текстовую метку со столбцом Samples (что имеет смысл, хорошо сделано), а также что вы хотели бы сопоставить размер со 4 столбцом (которого не существует). Это означает, что вы на самом деле не указали размер для текстовых меток (потому что вы дали ему только одно значение, 4) и попросили сопоставить это значение с масштабом по умолчанию для размера. Вот почему для «размера» отображается легенда — легенда, которая говорит вам, насколько велика будет точка, если значение 4.

Я подозреваю, что вы хотите переместить размер= за пределы эстетики, потому что вы хотели бы, чтобы это было зафиксировано во всех данных, и тогда ggplot будет знать, что вы используете его в качестве инструкции для определения размера точек, а не имени столбца, который вы хотели бы отобразить на данные.

 ggplot(data = pca.data, aes(x=X, y=Y,color = condition))   geom_point(size = 3)   geom_text(aes(label = Samples), size=4)  

Комментарии:

1. Это очень хорошее объяснение, спасибо. Таким образом, все, что находится внутри aes вызова, принадлежит значениям исходного фрейма данных. Будет ли нормально включить hjust в то или aes другое или снаружи aes geom_text ?