【发布时间】:2017-09-11 05:34:10
【问题描述】:
我查看了this one,但对随机部分没有帮助。有没有更好的方法来随机生成 3 种不同的颜色,以便正方形、圆形和文本在下面的代码中在视觉上相互突出。颜色必须是随机生成的,并且彼此之间也必须足够不同。当前的代码可能只有一半的时间起作用
plot(0, type = "n", xlim = c(0,10), ylim = c(0,10),
ann = FALSE, axes = FALSE, asp = 1)
cols = colorRampPalette(sample(2:9,2), alpha = TRUE)(8)
polygon(x = c(1,9,9,1), y = c(1,1,9,9), border = NA, col = cols[1])
symbols(x = 5, y = 5, circles = 4, inches = FALSE,
add = TRUE, bg = cols[4], fg = NA)
text(x = 5, y = 5, labels = "Hi", col = cols[7], font = 2, cex = 3)
示例
好
多边形:“#FF00FFFF”,圆:“#916DFFFF”,文本:“#24DAFFFF”
不好
多边形:“#00FFFFFF”,圆:“#51E3E3FF”,文本:“#A2C7C7FF”
【问题讨论】:
-
你能定义“从彼此中脱颖而出”吗?为什么这不是在 RGB 或 HSV 空间(或其他一些变换空间)中最大化数值距离的简单案例?如果您发布几个好坏图像并用所使用的文本(#TTTTTT)、圆圈(#CCCCCC)、正方形(#SSSSSS)值标记每个图像,这可能会有很大帮助,因此读者可以对此有所了解.
-
d.b,计算这两个调色板在 RGB 和 HSV 空间中的(欧几里得?)距离,归一化为单位立方体/圆柱体。就像我说的,我认为这应该能说明问题。这称为色差
-
几乎相同的问题:How to compare two colors for similarity/difference,但更笼统
-
如果我们随意设置圆圈为黑色(/白色)的约束,是否会使这个问题更客观?
-
一些不错的 java 答案 here 可以很容易地移植到 R。
library(randomcoloR)也有一个简洁的函数distinctColorPalette()
标签: r colors rgb color-scheme hsv