【问题标题】:Plot matrix rows on stripchart as a raster plot in R将带状图上的矩阵行绘制为 R 中的栅格图
【发布时间】:2016-10-21 17:50:40
【问题描述】:

我已经为此苦苦挣扎了很长时间。我想在 R 中创建一个栅格图,以显示神经元相对于刺激的动作电位 (AP) 时间。像这样的东西:Each row represents the AP series in a given time window aligned to a stimulus repeated several times (sometimes at different frequencies)

我有一个矩阵,其中包含相对于每个刺激的 AP 时间(正时间值和负时间值)。

我认为stripchart 是一个很好的解决方案,因为它绘制了一维数据。如何绘制矩阵的每一行(或行的选定元素)看起来像附加的图像。我知道stripchart 函数还可以绘制包含不同长度的数字向量的列表,所以首先我从每一行中选择合适的元素,创建一个列表并绘制。我还尝试了应用于矩阵的as.list 函数,因此当我想更改选择矩阵元素的条件时,我不必创建新列表。看起来不错,但我有两个问题。首先,不知何故,我不确定它是否正确地进行了绘图(逐行,选定的元素),而且我不确定这是最有效的方法。其次,因为我有很多行,所以它们在条形图中并没有像在第一张图像上那样保持分开。我试图调整stripchart 函数的参数,但没有任何帮助。我的情节是这样的:enter image description here

总之,我正在寻找一种有效的方法来将矩阵行(选定的元素)绘制为一维向量,保持图像上的行分开。

感谢您的帮助!

【问题讨论】:

    标签: r matrix plot raster stripchart


    【解决方案1】:

    看起来像条形图按列处理数据帧....所以简而言之,转置矩阵,将矩阵转换为 df

    x1 <- matrix(rnorm(50),nrow = 5)
    x1<-cbind(x1, rep(4,5))
    df<-as.data.frame(t(x1))
    df
    stripchart(df, pch = "|", las=1)
    

    我认为 stripchart 不能按预期处理矩阵的原因是因为在 R 中,矩阵在内部只是一个向量......

    希望这会有所帮助。

    matplot

    我似乎无法让它旋转 90 度,尽管这确实使用了没有强制的矩阵

    matplot(x1, pch="_", col="black")
    

    matplot 版本 2:

    通过一些 Photoshop,这可能会起作用...

    par(mar=c(5.1,2.1,4.1,4.1))
    matplot(x1, pch="_", col="black", las=3, yaxt="n", ylab="")
    axis(4)
    mtext("x1",side = 4,line = 2)
    

    【讨论】:

    • 是的,我考虑过这一点,但出于多种原因,我试图故意避免使用此解决方案。最重要的是因为我使用非常大的矩阵并将其中的几个组合成一个,这会创建一个非常大的 df。我发现它很慢,但我会尝试缩小尺寸并再试一次。谢谢。
    • 我也发现了这个。可以很好,但仍然不是我需要的。我想我将不得不处理我的数据结构。
    • @ViktorPlattner,我们在这里讨论的数据集有多大?我经常制作 500 万行数据帧,没有太大问题。如果您的数据集真的那么大,那么您最好考虑一些其他汇总统计图,而不是绘制每个观察值。
    • 嗯,它肯定没有那么大,所以它可能会起作用
    猜你喜欢
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 2013-01-21
    相关资源
    最近更新 更多