ggplot:使用

时间:2017-01-11 19:02:17

标签: r plot ggplot2 facet

我在R工作,我遇到了一个问题:(。我想要使用ggplot创建这个数据帧:

          V1         V2         V3          V4         V5         V6         V7         V8         V9        V10
1 -0.8067465 -0.4170181  0.9380890 0.613084937  0.4583916  0.4175951 -0.7183698 -0.3479931 -0.3392734 -0.8516039
2 -0.2893608 -0.8066911  0.1534129 0.008801641 -0.1916244 -0.6729157  0.6154498  0.1914066  0.3660398  0.9019622
3 -0.9536465  0.9645535 -0.6915938 0.328425519 -0.4197832 -0.2064765 -0.4328127  0.7849686 -0.2665250  0.6206650

我需要将每一列一起绘制到另一列,就像facet_grid一样。在X轴中,我只需要为每个图调整基于间隔的限制(例如:[ - 1,1]),而不是特定的列/变量。 Y轴工作正常。

我的主要问题是我不知道如何使用列名称生成每个绘图,并且在数据框中的每一列的同一图表中使用它们的三个点(或n个点)。我试过这样的事情:

ggplot(q12, aes(x = V1, y = row.names(q12))) + 
  geom_point()+
    facet_grid(.~ V1)

生成this plot,我想要一些像this

我知道V1必须是列的列表,但我不知道该怎么做。使用colnames(q12)不起作用,我需要同一图表中的三个点。

在我之前使用ggplot的经历中,我有一个带有ID的列o一个用于绘图的属性。这个案子有点不同,我研究了很多,但我找不到任何解决方案。我试着融化没有结果,也许我不知道它是如何工作的。

如果有人可以一步一步地帮助我,为了学习它,我将非常感激。

数据

structure(list(V1 = c(-0.8067465, -0.2893608, -0.9536465), V2 = c(-0.4170181, 
-0.8066911, 0.9645535), V3 = c(0.938089, 0.1534129, -0.6915938
), V4 = c(0.613084937, 0.008801641, 0.328425519), V5 = c(0.4583916, 
-0.1916244, -0.4197832), V6 = c(0.4175951, -0.6729157, -0.2064765
), V7 = c(-0.7183698, 0.6154498, -0.4328127), V8 = c(-0.3479931, 
0.1914066, 0.7849686), V9 = c(-0.3392734, 0.3660398, -0.266525
), V10 = c(-0.8516039, 0.9019622, 0.620665)), .Names = c("V1", 
"V2", "V3", "V4", "V5", "V6", "V7", "V8", "V9", "V10"), class = "data.frame", row.names = c("1", 
"2", "3"))

1 个答案:

答案 0 :(得分:0)

你需要做两件事:

  1. y值添加列(行名称是提供有意义信息的不良位置)
  2. melt您的数据为长格式。
  3. 我们走了:

    # Add ID column:
    q12$id = 1:nrow(q12)
    # maybe better for you: q12$id = row.names(q12)
    
    # Melt data
    library(reshape2)
    df_long = melt(q12, id.vars = "id")
    
    # plot data
    ggplot(df_long, aes(x = value, y = id)) + 
        geom_point() +
        facet_wrap(~ variable)
    

    我使用dput()精确制作的数据:

    q12 = structure(list(V1 = c(-0.8067465, -0.2893608, -0.9536465), V2 = c(-0.4170181, 
    -0.8066911, 0.9645535), V3 = c(0.938089, 0.1534129, -0.6915938
    ), V4 = c(0.613084937, 0.008801641, 0.328425519), V5 = c(0.4583916, 
    -0.1916244, -0.4197832), V6 = c(0.4175951, -0.6729157, -0.2064765
    ), V7 = c(-0.7183698, 0.6154498, -0.4328127), V8 = c(-0.3479931, 
    0.1914066, 0.7849686), V9 = c(-0.3392734, 0.3660398, -0.266525
    ), V10 = c(-0.8516039, 0.9019622, 0.620665)), .Names = c("V1", 
    "V2", "V3", "V4", "V5", "V6", "V7", "V8", "V9", "V10"), row.names = c("1", 
    "2", "3"), class = "data.frame")