2010-11-21 16 views
5

Soruma göre Algorithm to convert any positive integer to an RGB value ama gerçekten aynı soru değil - bu adam çoğunlukla bir veri normalleştirme sorunu var, aslında daha fazla estetik renk seçimi sorunu var.Basit PHP işlevi bir sayı bir heatmap HTML arka plan rengine dönüştürmek için?

-1.0 ile +1.0 arasında bir grup sayımız var. Metinle kaplanmış bir sıcaklık haritası oluşturmam gerekiyor.

Her bir sayıyı bir HTML rengine (#rrggbb) dönüştürmek için PHP'yi kullanmanın en kolay yolu, sonuçta ortaya çıkan renk, yalnızca sezgisel olarak sıcaklıkla ilgili değildir (yani en sıcak için en soğuk ve en kırmızı için bluest) , aralarında yumuşak bir geçiş ile) ama aynı zamanda siyah renkli metin için bir arka plan rengi olarak uygun mu?

cevap

11

Ben bir onaltılık değere kodlamak için sprintf function kullanarak, kırmızı ve mavi bileşenleri arasında basit doğrusal gradyan olarak uygulayacağını:

function toHeatColor($full) { 
    $positive = ($full + 1)/2; 
    return sprintf("#%02xcc%02x", $positive * 51 + 204, (1 - $positive) * 51 + 204); 
} 

renk aralığı http://jsfiddle.net/9QQkU/ bakar nasıl görebilirsiniz. Karşılık gelen değerler -1, -0,75, 0, 0,75 ve 1'dir.

+0

Bu gerçekten deha ve güzel! +1 –