2012-01-24 34 views
7

我想知道是否有一個簡單的算法(或jQuery插件)來選擇可區分的顏色,最多約20種不同的顏色。如果沒有,我可以在哪裏找到一系列可直接使用的可區分顏色?javascript中區別顏色的生成

我的用例是爲餅圖生成不同的顏色。

回答

6

我的想法是從HSV顏色模型開始,在周邊(色調)與最大飽和度和值走:

function hsvToRgb(h, s, v) { 
    //... see e.g.: http://snipplr.com/view/14590 
} 

function distinctColors(count) { 
    var colors = []; 
    for(hue = 0; hue < 360; hue += 360/count) { 
     colors.push(hsvToRgb(hue, 100, 100)); 
    } 
    return colors; 
} 

distinctColors(10)生產:

[[255, 0, 0], [255, 153, 0], [204, 255, 0], [51, 255, 0], [0, 255, 102], [0, 255, 255], [0, 102, 255], [51, 0, 255], [204, 0, 255], [255, 0, 153]] 

很難說只看RGB值,但它們應該儘可能不同。我從here開始執行hsvToRgb()

+0

+1這是我在這裏使用的方法:http://graphicdivine.co.uk/timeline/。值得一提的是,可以通過調整兩個100的向下來調整飽和度和亮度。 – graphicdivine

+0

另外,爲了清晰起見,變量'saturation'應該可能被命名爲'hue'。 – graphicdivine

+0

@graphicdivine:當然更正了,謝謝!順便說一句,如果錯誤是明顯的:-),隨意編輯別人的答案。 –

2

您可以使用例如。 Color Scheme Designer

我不知道任何會自動執行此操作的JavaScript片段,但是如果您正確定義了「可區分顏色」的術語,則可以創建一個。

還有一個默認list of 16 basic colors in CSS3 (from W3C)

enter image description here

您可以使用它們,添加許多其他的顏色你喜歡你自己的使用。

0

作爲臨時的解決方案,我從維基百科的文章拿起顏色上web colors

var colors = [ 
    '#0000FF', //blue 
    '#FFFF00', //yellow 
    '#008000', //green 
    '#FFA500', // orange 
    '#FF0000', //red 
    '#800080', //purple 
    '#808000', //olive 
    '#00FF00', //lime 
    '#800000', //maroon 
    '#00FFFF', //aqua 
    '#008080', //team 
    '#000080', //navy 
    '#FF00FF', //fushua 
    '#808080' //gray 
]; 
0

我已爲此創建了一個Javascript庫。您可以使用colorchain.js生成具有不同色調的顏色序列。