you could do something just like what you mention using a combination of a LM3915 dot/bar driver and a 8 to 3 encoder chip.
the LM3915 takes one of 10 outputs low in response to signal level, so you’ll need to invert them to drive the encoder.
these could then be fed into an 8-to-3 encoder chip, with the output used to drive the LED directly.
ie Q(0) to Red, Q(1) to Green, Q(2) to Blue on your LED.
you could then choose which order your colours should go.
say your LED glows blue at low levels, through green/yellow at middle levels, etc:
[tt]
out 10 (max) - input (7) = 111 = All cells on = White
out 9 - input (1) = 001 = Red cell alone
out 8 - input (3) = 011 = Red+Green = Yellow
out 7 - input (2) = 010 = Green cell alone
out 6 - input (6) = 110 = Green+Blue = Cyan
out 5 - input (4) = 100 = Blue cell alone
out 4 - input (5) = 101 = Red+Blue = Magenta
out 1-3 OR’d - input (0) = 000 = All cells off
[/tt]
Edit: I’ve just realised that this all assumes a common cathode LED, and yours is common anode. No big issue, just patch as follows:
[tt]
out 10 (max) - input (0) = 000 = All cells on = White
out 9 - input (6) = 110 = Red cell alone
out 8 - input (4) = 100 = Red+Green = Yellow
out 7 - input (5) = 101 = Green cell alone
out 6 - input (1) = 001 = Green+Blue = Cyan
out 5 - input (3) = 011 = Blue cell alone
out 4 - input (2) = 010 = Red+Blue = Magenta
out 1-3 OR’d - input (7) = 111 = All cells off
[/tt]