2013-06-10 5 views
6

Mam trochę tabeli/wykresu. I dodaję dla nich serie. Każda seria jest oznaczona kolorem.Uzyskaj następny kolor dla wykresu/stołu?

Poszukuję, jak wybrać najlepszy kolor dla serii, którą dodaję do mojej serii.

Celem jest uzyskanie następnego najlepszego koloru, w zależności od kolorów już użytych. Ponieważ mogę dodawać/usuwać serie, nie mogę po prostu mieć tablicy kolorów i wziąć następną na listę.

słyszałem nie było pewne, że MS wytyczną (tylko znaleźć ten ekwiwalent dla excel)

Każdy pomysł/link/metoda to zrobić?

EDIT: Znaleziono this które zapewniają interessting informacji o kontrast kolorów

EDIT2: I próbował użyć „Color Hue koło”: ja tylko podzielić koło przez liczbę kolorów, które muszę i biorę kolor na początku pozycji. Włączyłem też sposób na wyrównanie, jeśli chcemy zacząć od innego koloru.

Działa, mam różne kolory, ale mam wrażenie, że możemy to zrobić lepiej. Na przykład. Z offsetem 210 °, 6 kolorów, mam te kolory: enter image description here Myślę, że to tylko złudzenie optyczne, ale dwa ostatnie kolory wydają się być bliżej niż inne. Problem polega na tym, że mam do czynienia z okiem użytkownika.

Cała "barwa" wygląda tak: enter image description here Okiem widzimy, że istnieje kolor, który wygląda bardziej odmiennie niż inne (np. Cyjan). Dla mnie zielony wydaje się większy niż żółty, ...

Wygląda na to, że istnieje pojęcie kolorów o numerze perceptually linear colors, czy wiesz, że istnieje algorytm pozwalający uzyskać percepcyjnie liniowy zestaw kolorów? To będzie łatwe do podjęcia kolory, które muszę

+0

Osiągnąłem pewien sukces przy użyciu współrzędnych kolorystycznych [HSV] (http://en.wikipedia.org/wiki/HSL_and_HSV) dla takich obliczeń. Mógłbyś, w mniejszym lub większym stopniu, naprawić wartości S i V, i po prostu obliczyć wartość H, aby znaleźć odpowiedni kolor. – SWeko

+0

Dziękuję za odpowiedź, to była moja pierwsza próba, sprawdziłem liczbę potrzebnych obrazów, dzielę 360 przez liczbę, a następnie uzyskuję kolor w tej pozycji. Ale mam wrażenie, że możemy to zrobić lepiej. Aktualizuję odpowiedź – J4N

+1

Cóż, dla odpowiednio małych liczb, do 10-ish, myślę, że można ustawić kolor ręcznie (1 seria - niebieski, 2 serie - niebieski i czerwony, 3, niebieski, czerwony, żółty , itd ...) i użyj koła kolorów powyżej tego numeru. – SWeko

Odpowiedz

0

Wystarczy popatrzeć na How to automatically generate N "distinct" colors? ale ...

To, co zrobiłem, gdy do czynienia z podobnym problemem.

Stworzyłem jako stół z 32 ładnie rozprowadzonymi i wyrazistymi kolorami. Zrobiłem to raz. Kiedy muszę przedstawić więcej niż 32, po prostu powtarzam kolory. Zdecydowałem, że 32 odrębne serie są więcej niż wystarczająco dobre dla mojego zbioru danych (nie jestem świadomy, że więcej niż 32 serii zostało rzeczywiście wykorzystanych w prawdziwym scenariuszu życia).

Wariantem tego jest nieznaczna zmiana koloru, gdy przekroczymy rozmiar tabeli odniesienia, stosując surową zmianę dodania 11111 do niego.

Zauważyłem, że jest to bardzo proste podejście, z niewielką ilością miejsca na błędy.

Większość (wszystkich?) Algorytmów, które pobierają liczbę potrzebnych kolorów i generują listę różnych kolorów, cierpią z powodu zmiany kolorów istniejących serii po dodaniu nowego, co powoduje blokowanie, ponieważ użytkownicy normalnie oczekuj, że seria X będzie czarna, a seria Y żółta itd., nawet jeśli dodadzą nową serię.

0

W końcu skończyłem, mierząc odległość koloru. Akceptuj to tylko wtedy, gdy odległość jest większa niż spust.

Aby to zrobić, wykonuję iterację na moim HsvColor, a następnie konwertuję ją na Rgb -> XYZ -> Lab (CIE L * a * b), która jest percepcyjnie liniową skalą kolorów. Oparłem swój kod na tym: http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CMC.html