想象一下,我们有7个类别(例如宗教信仰),我们希望不是以线性方式绘制它们,而是在自动选择的群集中进行良好对齐。在这里,组内的个体具有相同的响应,但不应该在一行上绘制(在绘制序数数据时会发生这种情况)。
总结一下:
自动使用可用图表空间
无订单分组,在画布上展开
个人仍然可见;没有重叠
让群组中的个人受某些(不可见的)圈子的束缚会很高兴
是否有为此目的设计的包装?我需要寻找什么关键词?
示例数据:
religion <- sample(1:7, 100, T)
# No overlap here, but I would like to see the group part come out more.
plot(religion)
答案 0 :(得分:6)
将坐标分配给每个组的中心后,
您可以使用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=""
)
或者,您可以使用clique(或树)构建图形
对于每个小组,
并使用igraph
中的众多图形布局算法之一。
library(igraph)
A <- outer( religion, religion, `==` )
g <- graph.adjacency(A)
plot(g)
plot(minimum.spanning.tree(g))
答案 1 :(得分:1)
在您链接的图像中,每个点都有三个相关的数字:坐标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))
请注意,我正在为每个组创建随机中心,并为每个观察点围绕这些中心创建小位移。您必须使用参数eps
,并且如果想要追求此路径,可以手动设置中心。