如何为数据点选择唯一颜色

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:如何在每个数据点获得不同颜色的散点图中设置图例的颜色?

excel使用记录(转)

在ARCGIS中如何把一个地图中的某几个图块用一个颜色表示,其他图块用另外的颜色表示?

如何使用 SQL 选择每个唯一日期的唯一会话?

如何用matlab 画散点图 如何标记数据点的颜色