在R中绘制标称数据簇

在R中绘制标称数据簇,r,R,假设我们有7个类别(例如宗教),我们希望不以线性方式绘制它们,而是以自动选择的集群进行排列。在这里,组内的个体有相同的反应,但不应绘制在一行上(绘制顺序数据时会发生这种情况) 总而言之: 自动使用可用的图形空间 无顺序分组,分布在画布上 个人仍然可见;没有重叠 如果团队中的个人被某个(无形的)圈子所束缚,那就太好了 是否有专门为此目的设计的包装?我需要查找哪些关键字 示例数据: religion <- sample(1:7, 100, T) # No overlap here, but

假设我们有7个类别(例如宗教),我们希望不以线性方式绘制它们,而是以自动选择的集群进行排列。在这里,组内的个体有相同的反应,但不应绘制在一行上(绘制顺序数据时会发生这种情况)

总而言之:

  • 自动使用可用的图形空间

  • 无顺序分组,分布在画布上

  • 个人仍然可见;没有重叠

  • 如果团队中的个人被某个(无形的)圈子所束缚,那就太好了

是否有专门为此目的设计的包装?我需要查找哪些关键字

示例数据:

religion <- sample(1:7, 100, T)
# No overlap here, but I would like to see the group part come out more. 
plot(religion)  

在链接的图像中,每个点都有三个关联的数字:坐标x和y以及组(颜色)。如果每个人只有一个信息,可以执行以下操作:

set.seed(1)

centers <- data.frame(religion=1:7, cx=runif(7), cy=runif(7))

eps <- 0.04

data <- within(merge(data.frame(religion=sample(1:7, 100, T)), centers),
{
    x <- cx+rnorm(length(cx),sd=eps)
    y <- cy+rnorm(length(cy),sd=eps)
})

with(data, plot(x,y,col=religion, pch=16))
set.seed(1)

中心将坐标分配给每组的中心后, 您可以使用
wordcloud::textplot
避免标签重叠

# Data
n <- 100
k <- 7
religion <- sample(1:k, n, TRUE)
names(religion) <- outer(LETTERS, LETTERS, paste0)[1:n]
# Position of the groups
x <- runif(k)
y <- runif(k)
# Plot
library(wordcloud)
textplot(
  x[religion], y[religion], names(religion), 
  xlim=c(0,1), ylim=c(0,1), axes=FALSE, xlab="", ylab=""
)

不清楚您想要实现什么目标。我以为我知道,但示例数据让我困惑。请把示例图放进去。@Tomas是这样的,没有中间的线,我想仅仅链接没有数据和解释的图是不够的@托马斯把每个点都想象成一个个体,并用颜色来代表不同的宗教。@托马斯我想得到一个类似的图形,在个体之间没有线条,基于示例“数据”。令人困惑的是,一个生成随机图的答案比另一个生成随机图的答案多4票(而且不需要加载一堆外部代码来完成)。+1来补偿。谢谢,但我必须承认文森特的回答看起来更专业:-)非常感谢,这是很大的帮助。
library(igraph)
A <- outer( religion, religion, `==` )
g <- graph.adjacency(A)
plot(g)
plot(minimum.spanning.tree(g))