【问题标题】:Visualizing an association btw two discrete variables via diagram in R通过 R 中的图表可视化两个离散变量之间的关联
【发布时间】:2018-07-10 23:23:27
【问题描述】:

假设有两个变量(stategroup)。 state (s) 的实例可能与 group (g) 的特定实例共享一个属性。例如,s1s2s3 可能与 g1 有关联。

我想以如下图的形式可视化这两个变量之间的关联:

我想用 R 生成这样的图表。你会推荐我使用什么 R 包?

【问题讨论】:

  • 我建议您看看这里:rich-iannone.github.io/DiagrammeR 该演示(视频)将让您了解您可以做什么。
  • 这看起来有点像 桑基图。有几个 R 包可以生成这些。
  • @ErwinKalvelagen 感谢您提供更合适名称的指针!是的,我打算生成的图表类型与桑基图非常相似,但与真正的桑基图相比,“箭头的宽度与流量成正比”(来源:维基百科的“桑基图” ),我旨在可视化的数据集在流量上没有任何变量。我希望可视化一个单纯的关联。
  • @AntoniosK 你推荐的包生成网络图。这样的图表不适合这里,因为变量内不能有关联,只能在我的数据中的变量之间。
  • 可能是e <- read.table(sep=",", text="s1,g1\n s2,g1\n s3,g1\n s4,g2\n s5,g2\n s6,g2\n s7,g3\n s8,g4\n s9,g5\n s10,g5");library(igraph);g <- graph_from_edgelist(as.matrix(e));V(g)$type <- bipartite.mapping(g)$type; coords <- layout_as_bipartite(g);plot(g,layout = -coords[,2:1])

标签: r diagram


【解决方案1】:

根据lukeA的建议,我想出了以下代码来解决上述需求。

在外壳中:

$ cat table
s1  g1
s2  g1
s3  g1
s4  g2
s5  g2
s6  g2
s7  g3
s8  g4
s9  g5
s10 g5

在 R 中:

library(igraph)

# Reading data from file
m <- as.matrix(read.table(file="~/Desktop/table", sep="\t"))

# Generating igraph
g <- graph_from_edgelist(m, directed=FALSE)
V(g)$type <- bipartite.mapping(g)$type
coords <- layout_as_bipartite(g)

# Plotting operations
plot.igraph(g, layout = -coords[,2:1]) # Preliminary plotting (why necessary?)
plot.igraph(g, layout = -coords[,2:1],
    vertex.shape="rectangle", # For vertex.foo and edge.foo commands, see: http://igraph.org/r/doc/plot.common.html
    vertex.size=50,
    vertex.size2=20,
    vertex.color=NA,
    vertex.label.color= "black")

# Adding title to plot
title("My first igraph")

【讨论】:

    猜你喜欢
    • 2021-12-29
    • 1970-01-01
    • 2010-11-30
    • 2013-11-01
    • 2020-07-30
    • 2013-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多