作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 XY
数据(一个二维 tSNE
嵌入高维数据),我想要 scatter plot
.数据被分配到几个cluster
s,所以我想用 cluster
对点进行颜色编码然后为每个 cluster
添加一个标签,具有与 cluster
相同的颜色编码s,并且位于 cluster
之外(尽可能)的点。
知道如何使用 R
来做到这一点在任一 ggplot2
和 ggrepel
或 plotly
?
这是示例数据(XY
坐标和 cluster
分配在 df
中,标签在 label.df
中)和 ggplot2
一部分:
library(dplyr)
library(ggplot2)
set.seed(1)
df <- do.call(rbind,lapply(seq(1,20,4),function(i) data.frame(x=rnorm(50,mean=i,sd=1),y=rnorm(50,mean=i,sd=1),cluster=i)))
df$cluster <- factor(df$cluster)
label.df <- data.frame(cluster=levels(df$cluster),label=paste0("cluster: ",levels(df$cluster)))
ggplot(df,aes(x=x,y=y,color=cluster))+geom_point()+theme_minimal()+theme(legend.position="none")
最佳答案
geom_label_repel()
ggrepel
中的函数包允许您轻松地向绘图添加标签,同时尝试“排斥”标签不与其他元素重叠。对现有代码稍作补充,我们汇总数据/获取放置标签位置的坐标(这里我选择了每个集群的左上角区域 - 这是 x 的最小值和 y 的最大值)并合并它使用包含集群标签的现有数据。在对 geom_label_repel()
的调用中指定此数据框并指定包含 label
的变量美学在 aes()
.
library(dplyr)
library(ggplot2)
library(ggrepel)
set.seed(1)
df <- do.call(rbind,lapply(seq(1,20,4),function(i) data.frame(x=rnorm(50,mean=i,sd=1),y=rnorm(50,mean=i,sd=1),cluster=i)))
df$cluster <- factor(df$cluster)
label.df <- data.frame(cluster=levels(df$cluster),label=paste0("cluster: ",levels(df$cluster)))
label.df_2 <- df %>%
group_by(cluster) %>%
summarize(x = min(x), y = max(y)) %>%
left_join(label.df)
ggplot(df,aes(x=x,y=y,color=cluster))+geom_point()+theme_minimal()+theme(legend.position="none") +
ggrepel::geom_label_repel(data = label.df_2, aes(label = label))
关于r - 向聚类散点图 (tSNE) 添加文本注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51120412/
我是一名优秀的程序员,十分优秀!