理解 ggplot for PCA 中的美学
understanding aesthetics in ggplot for 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))
我想了解美学部分。如果我不在 aes 下使用 label=pca.data$Samples,size=4
,我的图表看起来会有所不同。正确的方法是什么,将标签放在 geom_text 中的 aes 下?
ggplot2
使用 aes
thetics 将数据框中的值映射到各个数据点。当对象包含在对 aes
的调用中时,程序包假定这些对象会在数据集的过程中发生变化,例如每个数据点具有不同值的 x 值或 y 值。当您在 aes
之外的 ggplot 调用中包含内容时,程序包假定该值在数据中是固定的,不需要映射到列。
在您的代码中,您已经告诉 ggplot 所有几何图形感兴趣的列是 x、y 和颜色。然后您告诉它对于点 geom,您希望所有点的大小都为 3(因为这未在 aes
调用中指定)。然后,您告诉它对于标签 geom,您希望将文本标签映射到样本列(这是有道理的,做得好)并且您还希望 map 大小到 4
列(不存在)。这意味着您实际上没有指定文本标签的大小(因为您只给它一个值 4)并要求它将该值映射到默认的大小比例。这就是为什么会显示“大小”的图例 - 这个图例会告诉您如果值为 4,则点有多大。
我怀疑你想要的是将 size= 移到美学之外,因为你希望它在数据中固定,然后 ggplot 会知道你正在使用它作为说明有多大使点而不是您想要映射到数据的列的名称。
ggplot(data = pca.data, aes(x=X, y=Y,color = condition))+
geom_point(size = 3)+
geom_text(aes(label = Samples), size=4)
我想为以下数据绘制 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))
我想了解美学部分。如果我不在 aes 下使用 label=pca.data$Samples,size=4
,我的图表看起来会有所不同。正确的方法是什么,将标签放在 geom_text 中的 aes 下?
ggplot2
使用 aes
thetics 将数据框中的值映射到各个数据点。当对象包含在对 aes
的调用中时,程序包假定这些对象会在数据集的过程中发生变化,例如每个数据点具有不同值的 x 值或 y 值。当您在 aes
之外的 ggplot 调用中包含内容时,程序包假定该值在数据中是固定的,不需要映射到列。
在您的代码中,您已经告诉 ggplot 所有几何图形感兴趣的列是 x、y 和颜色。然后您告诉它对于点 geom,您希望所有点的大小都为 3(因为这未在 aes
调用中指定)。然后,您告诉它对于标签 geom,您希望将文本标签映射到样本列(这是有道理的,做得好)并且您还希望 map 大小到 4
列(不存在)。这意味着您实际上没有指定文本标签的大小(因为您只给它一个值 4)并要求它将该值映射到默认的大小比例。这就是为什么会显示“大小”的图例 - 这个图例会告诉您如果值为 4,则点有多大。
我怀疑你想要的是将 size= 移到美学之外,因为你希望它在数据中固定,然后 ggplot 会知道你正在使用它作为说明有多大使点而不是您想要映射到数据的列的名称。
ggplot(data = pca.data, aes(x=X, y=Y,color = condition))+
geom_point(size = 3)+
geom_text(aes(label = Samples), size=4)