Hét vraag- en antwoordplatform van Nederland

Hoe vind ik de juiste RGB-waarden voor een stapsgewijs kleurverloop?

Ik werk in Excel vaak met gegevens die in een aantal categorieën vallen. Soms zijn dat 5 categorieën, soms wel 20.

Nu wil ik elke categorie een eigen kleur geven.

Stel dat er 15 categorieën zijn. Ik wil dan 15 kleuren hebben die een "natuurlijk verloop" hebben. Bijvoorbeeld van groen (veilig) via geel naar rood (riskant), of van blauw (koud) naar rood (heet). Of een ander verloop dat enigzins "natuurlijk" / "logisch" aanvoelt.

Mijn wensen voor de kleuren zijn:
--   Natuurlijk aanvoelend verloop (bijv. groen-->rood, of blauw-->rood).
--   Een gelijkmatig verloop, zonder vreemde "sprongen".
--   Twee naburige kleuren zijn even goed van elkaar te onderscheiden.
--   Als je één kleur ziet, "voel" je direct waar hij thuishoort in de serie.

Is er een manier om zo'n kleurverloop te maken, dat wil zeggen: is er een manier om, als ik N categorieën heb, voor elke categorie een geschikte RGB-kleur te vinden?

Zo ja, op welke manier doe ik dat?

Zo nee, waar kan ik voorbeelden geven van een dergelijk "natuurlijk" kleurverloop?
 

Toegevoegd na 2 minuten:
 
Hieronder een voobeeld dat ik even in elkaar heb geknutseld. Het geeft redelijk aan wat ik bedoel, maar ik ben niet helemaal tevreden over deze kleuren. Vooral het lichtgeel en het geel liggen te dicht bij elkaar naar mijn zin, en ook van oranjerood naar bruinrood zijn de overgangen "kleiner" dan in de andere delen van dit palet.

Het is dus niet precies wat ik wil hebben, maar het geeft wel de richting aan waarin ik aan het zoeken ben.
 

Picture for question
Cryofiel
9 jaar geleden
7.8K
Cryofiel
9 jaar geleden
Oeps, typefoutje aan het einde van mijn oorspronkelijke toelichting (de laatste zin vóór de toevoeging). Er staat nu:
"waar kan ik voorbeelden _geven_ van een dergelijk "natuurlijk" kleurverloop? Dit had moeten zijn:
"waar kan ik voorbeelden _vinden_ van een dergelijk "natuurlijk" kleurverloop?

Heb je meer informatie nodig om de vraag te beantwoorden? Reageer dan hier.

Het beste antwoord

Beste Cryofiel.

Je kunt natuurlijk zelf een verloop uitrekenen, maar er zijn online diverse tools beschikbaar die voor jou een kleurverloop uitrekenen. Dat hoef je niet zelf te doen.

Een van die sites is bij voorbeeld deze:

http://www.perbang.dk/rgbgradient/

De site is eenvoudig in het gebruik en intuïtief opgezet. Je komt er vast wel uit.

Groet,
Rose...
(Lees meer...)
rose
9 jaar geleden

Andere antwoorden (2)

Het meest logische is uitgaan van HSB waarden. Niet van RGB waarden.
Een consistent kleurverloop krijg je met:
Brightness(intensiteit) 120
Saturation(verzadiging) 240
Hue(tint) in de range 0-160 (Rood...Geel...Groen...Cyan...Blauw)
Of je gaat juist uit van een aantal kleuren, en binnen de groep varieer je de saturatie.
Die waarden moet je omrekenen naar RGB waarden. Maar dat geeft problemen.
In je voorbeeld maak je er al een rommeltje van door met de helderheid te varieren. (Het linker blauw heeft lage intensiteit. Het rechter bruin is lage intensiteit rood.)
Wat het oog verschillend of juist bijna hetzelfde vindt laat zich niet logisch vertalen.
(Lees meer...)
9 jaar geleden
Ik heb een soortgelijk probleem opgelost door de kleuren van de regenboog te gebruiken. In de regenboog zitten kleuren van oplopende golflengte naast elkaar. Je moet dus een functie hebben die golflengte van zichtbaar licht (van 400nm naar pakweg 700 nm) omzet naar RGB.

Zo'n functie heb ik in c#. Misschien kun je hem porteren naar VBS...
(Lees meer...)
Verwijderde gebruiker
9 jaar geleden
Cryofiel
9 jaar geleden
Euh... aha... bedankt, geloof ik... Zou je jouw functie kunnen uitvoeren en mij de resultaten (RGB) kunnen geven wanneer je het spectrum in 14 kleuren verdeelt? Liefst met uitsluiting van het violet, want dat lijkt optisch teveel op rood. Dus zeg maar van rood (750 nm) tot blauw (450 nm).
Verwijderde gebruiker
9 jaar geleden
De volgende lijst van kleuren loopt van 440 tot 645 en geeft een mooi resultaat. Helaas zijn de naburige kleuren soms niet goed van elkaar te onderscheiden, dus deze oplossing voldoet niet aan al je eisen. 0,0,255
0,82,255
0,163,255
0,240,255
0,255,89
33,255,0
91,255,0
146,255,0
204,255,0
255,247,0
255,184,0
255,126,0
255,63,0
255,0,0 Als je in Excel de volgende macro functie klaar zet alvorens de lijst in de meest linkse kolom te plakken, worden de kleuren meteen zichtbaar gemaakt: Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, cell As Range
Dim rgbArr() As String
Dim red, green, blue As Integer

Set rng = Intersect(Target, Range("A1:A20"))
If Not rng Is Nothing Then
For Each cell In Target.Columns(1).Cells
rgbArr = Split(cell.Value, ",")
If (UBound(rgbArr) = 2) Then
red = CInt(rgbArr(0))
green = CInt(rgbArr(1))
blue = CInt(rgbArr(2))
Cells(cell.Row, "B").Interior.Color = RGB(red, green, blue)
End If
Next cell
End If
End Sub Het C# programma waarmee ik de lijst heb gemaakt, is: static void Main(string[] args)
{
int waveStart = 440;
int waveEnd = 645;
int steps = 14;
double wavelength = waveStart; for (int i = 0; i < steps; i++)
{
var color = WeightToColorConverter.GetColorFromWaveLength((int)Math.Round(wavelength));
Console.WriteLine(string.Format("{0},{1},{2}", color.R, color.G, color.B));
wavelength += (double)(waveEnd - waveStart) / (steps - 1);
}
Console.ReadLine();
} De WeightToColorConverter kun je ook krijgen maar is iets te groot om hier toe te voegen.

Weet jij het beter..?

Het is niet mogelijk om je eigen vraag te beantwoorden Je mag slechts 1 keer antwoord geven op een vraag Je hebt vandaag al antwoorden gegeven. Morgen mag je opnieuw maximaal antwoorden geven.

0 / 2500
Gekozen afbeelding