在所有列上绘制每行数据(Spaghetti图)

时间:2018-04-10 20:14:05

标签: r plot transpose

我有一个small dataset,包含16行和5列。此数据集显示在图片下方,也可以使用以下内容导入R:

  d <- read.csv("https://raw.githubusercontent.com/izeh/i/master/De.csv")[-1]

目标:我的目标是在基础R中绘制所有列( Spaghetti plot )的每一行数据。例如,3行(总共16行)行),我希望下面的 图片。

问题:我尝试matplot()但没有成功,是否有 BASE R 解决方案?

matplot(d)

enter image description here

整个数据:

   GolBkgnd DesnTst Result PrdctConc PostBrd
1         4       4      3         5       5
2         2       3      5         3       5
3         5       4      3         5       4
4         3       4      4         1       3
5         5       3      2         4       4
6         5       4      5         5       4
7         5       3      3         1       5
8         5       4      5         5       4
9         5       3      2         1       3
10        5       4      3         4       5
11        5       3      1         4       3
12        3       4      3         4       5
13        5       3      4         2       5
14        4       4      3         5       5
15        5       3      3         5       4
16        5       4      4         3       5

3 个答案:

答案 0 :(得分:2)

使用基数R,您似乎只需要使用t()进行转置并自行绘制轴

matplot(t(d), type="l", xaxt="n")
axis(1, seq_along(d), names(d))

enter image description here

答案 1 :(得分:0)

以下是使用tidyverse

的解决方案
library(tidyverse)

d %>%
  mutate(index = 1:16) %>%
  gather(column, value) %>%
  ggplot(aes(column, value, color = index, group = index)) + 
  geom_lines()

答案 2 :(得分:0)

您正在绘制&#34;平行坐标图&#34;的图表。这些线条最终相互重叠的事实导致我建议使用抖动随机地稍微分开它们:

library(MASS)
png()
parcoord( sapply(d, jitter))
dev.off()

enter image description here

MASS包可以说是一个&#34; base&#34; -R包。如果您需要通过颜色识别,那么&#34;:

parcoord( sapply(d, jitter), col=1:16)

enter image description here