gpt4 book ai didi

R - 如何使 PCA 双标图更具可读性

转载 作者:行者123 更新时间:2023-12-04 01:38:14 26 4
gpt4 key购买 nike

我有一组包含 23 个变量的观察结果。

当我使用 prcomp 和 biplot 绘制结果时,我遇到了几个问题:

  • 实际图只占帧的一半 (x < 0),但图以 0 为中心,所以浪费了一半空间
  • 两个变量显然支配了结果,所以所有其他箭头都聚集在一起,我什么也读不懂

  • 广告 1. 我尝试设置 xlim 和/或 ylim,但我显然做错了什么,因为我这样做时情节全都搞砸了

    广告 2. 我可以以某种方式将箭头标签放置得更远,以便我可以阅读它们吗?或者也许我可以只绘制没有两个最长箭头的箭头(有点放大)?

    My PCA plot

    附录:是否可以让 biplot 以与箭头不同的颜色绘制标签?

    另外:如果 x 轴和 y 轴不成比例(它们的图形显示 x 和 y 上不同长度的间隔)是否有问题。
    我认为这会扭曲箭头之间的天使,这种调整大小不是相似性转换。
    是否可以强制 biplot 保持 1:1 的纵横比,或者将绘图绘制为矩形而不是正方形?

    最佳答案

    我想你可以用 xlimylim .另外,看看 expand ?biplot 的论据.不幸的是,您没有提供任何数据,所以让我们取一些示例数据:

    a <- princomp(USArrests)

    下面是刚刚调用 biplot的结果:
    biplot(a)

    enter image description here

    现在可以使用 xlim“放大”以仔细查看“谋杀”和“强奸”。和 ylim并使用缩放参数 expand来自 ?biplot :
    biplot(a, expand=10, xlim=c(-0.30, 0.0), ylim=c(-0.1, 0.1))

    enter image description here

    请注意由于 expand 在顶部和右侧轴上的不同缩放比例因素。

    这是否有助于使您的情节具有可读性?

    编辑

    您还询问是否可以为标签和箭头使用不同的颜色。 biplot不支持,可以复制 stats:::biplot.default的代码然后根据您的需要更改它(在使用 colplotaxis 时更改 text 参数)。

    或者,您可以使用 ggplot对于双标。在帖子中 here ,实现了一个简单的双标功能。您可以按如下方式更改代码:
    PCbiplot <- function(PC, x="PC1", y="PC2", colors=c('black', 'black', 'red', 'red')) {
    # PC being a prcomp object
    data <- data.frame(obsnames=row.names(PC$x), PC$x)
    plot <- ggplot(data, aes_string(x=x, y=y)) + geom_text(alpha=.4, size=3, aes(label=obsnames), color=colors[1])
    plot <- plot + geom_hline(aes(0), size=.2) + geom_vline(aes(0), size=.2, color=colors[2])
    datapc <- data.frame(varnames=rownames(PC$rotation), PC$rotation)
    mult <- min(
    (max(data[,y]) - min(data[,y])/(max(datapc[,y])-min(datapc[,y]))),
    (max(data[,x]) - min(data[,x])/(max(datapc[,x])-min(datapc[,x])))
    )
    datapc <- transform(datapc,
    v1 = .7 * mult * (get(x)),
    v2 = .7 * mult * (get(y))
    )
    plot <- plot + coord_equal() + geom_text(data=datapc, aes(x=v1, y=v2, label=varnames), size = 5, vjust=1, color=colors[3])
    plot <- plot + geom_segment(data=datapc, aes(x=0, y=0, xend=v1, yend=v2), arrow=arrow(length=unit(0.2,"cm")), alpha=0.75, color=colors[4])
    plot
    }

    绘制如下:
    fit <- prcomp(USArrests, scale=T)
    PCbiplot(fit, colors=c("black", "black", "red", "yellow"))

    enter image description here

    如果你稍微玩玩这个函数,我相信你可以弄清楚如何设置 xlimylim值等。

    关于R - 如何使 PCA 双标图更具可读性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17055291/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com