如何为数据点选择唯一颜色
Posted
技术标签:
【中文标题】如何为数据点选择唯一颜色【英文标题】:How select unique color for data points 【发布时间】:2019-05-10 05:18:06 【问题描述】:我需要为不同的84类型绘制Tsne
的不同向量表示。
library(Rtsne); library(ggplot2)
mydata <- read.table("tsneVectors.tsv", header=FALSE, sep="\t")
matrixdata <- data.matrix(mydata)
tsne <- Rtsne(as.matrix(matrixdata[ ,2:201]), check_duplicates = FALSE, pca = FALSE,
perplexity=30, theta=0.5, dims=2)
tsne_plot <- data.frame(x = tsne$Y[ ,1], y = tsne$Y[ ,2], col = matrixdata[ ,202])
ggplot(tsne_plot) + geom_point(aes(x=x, y=y, color=factor(col))) +
labs(x="", y="", col="col")+theme(legend.title=element_blank()) +
theme(panel.border = element_rect(colour = "black"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), panel.grid.minor = element_blank(),
axis.line = element_line(colour = "black")) + theme_bw()
问题是虽然颜色看起来是连续的,但有时真的很难看出它们之间的区别。
那么,有没有什么办法可以设置不同的颜色,以便更清楚地看到不同的组?
【问题讨论】:
问题是你想要84色点 我的意思是即使有连续的颜色,但只考虑第一种颜色(不是整个范围,不清楚它们之间的区别)@paoloeusebi 【参考方案1】:我认为甚至不可能找到人眼容易区分的 84 种颜色。
将它们分成多个地块,每个地块 10-15 组。
带有grid.arrange()
函数的gridExtra
包将对此很有用。
【讨论】:
我理解你,但我需要它们来比较它们。但我的意思是即使有连续的颜色,但只考虑第一种颜色(不是整个范围,不清楚它们之间的差异) 如何使用多个绘图,并在每个绘图中使用颜色突出显示选定的几个,而将其余部分留为黑色?【参考方案2】:也许你可以尝试根据合适的切点打破连续变量。使用cut
很简单,它将颜色美学范围划分为根据它们所属的间隔标记的间隔。
library(ggplot2)
col_intervals <- 3
ggplot(data = mtcars, aes(x=mpg, y=wt, colour = cut(hp, col_intervals)) ) +
geom_point()
另一种选择
ggplot(data = mtcars, aes(x=mpg, y=wt) ) +
geom_point(aes(colour = hp)) +
scale_colour_gradientn(colours = terrain.colors(10))
【讨论】:
什么是变量 hp? hp=总马力/mpg=每加仑英里数/wt=重量以上是关于如何为数据点选择唯一颜色的主要内容,如果未能解决你的问题,请参考以下文章
在 geoTIFF 中获取所有唯一颜色时,如何知道 PIL 指的是啥颜色?
Matlab:如何在每个数据点获得不同颜色的散点图中设置图例的颜色?