De couleur continue à l'échelle de domaine discret de chaînes?
Je me suis mise en œuvre d'une heatmap dans lequel la cellule de la couleur d'arrière-plan est déterminé par une d3 échelle de couleurs. Certaines valeurs sont catégoriques; leur valeur peut être de N différents arbitraire de type chaîne de catégories ["6", "7", "5ÈME", "4"].
Donné une couleur de début de la d3.rvb("bleu") et une couleur de fin d3.rvb("rouge"), comment puis-je construire une échelle de couleurs qui mappe un domaine discret de chaînes en continu d'une gamme de couleurs?
J'ai essayé
var scale = d3.scale.ordinal()
.domain(["6TH", "7TH", "5TH", "4TH"])
.rangeBands( [ d3.rgb("blue"), d3.rgb("red") ] );
qui de toute évidence ne fonctionne pas.
OriginalL'auteur amergin | 2012-08-31
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, je voudrais envisager d'utiliser l'un des facilement disponible Colorbrewer échelles; voir colorbrewer2.org. Ils sont également disponibles en tant que fichiers JavaScript et CSS en D3 du dépôt git; voir lib/colorbrewer. Par exemple, si vous avez quatre valeurs discrètes dans votre domaine et que vous souhaitez un rouge-bleu divergentes de l'échelle, vous pourriez dire:
(Vous aurez besoin d'un
<script src="colorbrewer.js"></script>
quelque part avant cela, aussi.) Colorbrewer a une variété de bien-conçu séquentielle, divergentes et catégorique des échelles de couleurs.Si vous insistez sur le roulement de votre propre échelle de couleurs, je vous recommande fortement de l'interpolation dans L*a*b* ou HCL espace de couleur pour la perception. Vous pouvez faire cela en utilisant d3.interpolateLab ou d3.interpolateHcl. Par exemple,
d3.interpolateLab("red", "blue")(.5)
retourne une couleur à mi-chemin entre le rouge et le bleu.Pour calculer les couleurs de votre échelle ordinale de gamme, vous pouvez utiliser un interpolateur, ou vous pourriez trouver un temporaire de l'échelle linéaire plus pratique. Par exemple:
OriginalL'auteur mbostock
Vous avez la bonne idée, vous avez juste besoin de traiter chaque R/G/B canal de couleur. Par exemple, en JavaScript natif, vous pouvez effectuer les opérations suivantes:
Selon la d3 documentation, vous pouvez extraire chaque canal de couleur à l'aide de la
r
,g
etb
attributs d'un objet couleur:Donc en haut de l'exemple ci-dessus, vous pourriez dire:
T-il m'aider?
OriginalL'auteur Justin Ethier