【问题标题】:understanding aesthetics in ggplot for PCA在 ggplot for PCA 中理解美学
【发布时间】:2021-12-16 10:42:34
【问题描述】:

我想为以下数据绘制 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,我的图表看起来会有所不同。什么是正确的方法,将label放在geom_text中的aes下?

【问题讨论】:

    标签: r ggplot2 pca


    【解决方案1】:

    ggplot2 使用aesthetics 将数据框中的值映射到各个数据点。当对象包含在对aes 的调用中时,该包假定这些对象会在数据集的过程中发生变化,例如每个数据点具有不同值的 x 值或 y 值。当您在 aes 之外的 ggplot 调用中包含内容时,该包假定该值在数据中是固定的,不需要映射到列。

    在您的代码中,您告诉 ggplot 所有几何图形感兴趣的列是 x、y 和颜色。然后告诉它,对于点几何,您希望所有点的大小都为 3(因为这不是在 aes 调用中指定的)。然后,您告诉它对于标签 geom,您希望将文本标签映射到 Samples 列(这很有意义,做得很好),并且您希望 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)
    

    【讨论】:

    • 这是一个很好的解释,谢谢。因此,aes 调用中的任何内容都属于源数据帧值。可以在aes 中包含hjust 或在geom_text 之外包含aes
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多