Je vais générer des graphiques et des diagrammes et je recherche une théorie sur les schémas de couleurs et des exemples d'algorithmes.
Exemples de questions:
- Comment générer des couleurs complémentaires ou analogues?
- Comment générer des couleurs pastel, froides et chaudes?
- Comment générer un nombre quelconque de couleurs aléatoires mais distinctes?
- Comment traduire tout cela en triplet hexagonal (couleur web)?
Mon implémentation sera en AS3 mais tous les exemples en pseudocode sont les bienvenus.
algorithms
theory
color
daniel.sedlacek
la source
la source
Réponses:
En cherchant plus d'informations sur cette question (c'est quelque chose avec laquelle j'ai eu du mal aussi), j'ai trouvé ce blog . Stefano Mazzocchi explique sa théorie sur les raisons pour lesquelles les programmeurs aspirent à choisir des couleurs pour la conception de l'interface utilisateur et offre des conseils et des liens utiles.
Le premier conseil qu'il offre est ce fait évident qui jette les bases de la sélection des teintes et des saturations:
Cela offre le premier indice sur la façon de choisir les couleurs pour le premier plan et l'arrière-plan - les informations moins importantes devraient utiliser un contraste plus faible et les informations plus importantes devraient utiliser un contraste plus élevé.
Le premier lien est vers Color Scheme Designer , un site similaire à Kuler. Comme Kuler, c'est un outil interactif pratique, mais il n'offre aucune idée de la façon dont les couleurs doivent être choisies, c'est-à-dire quels jaunes fonctionnent avec quels verts ou bleus, etc.
Le lien suivant qu'il propose est un site Web du laboratoire de recherche sur l'utilisation des couleurs de la NASA intitulé Utilisation de la couleur dans les graphiques d'affichage d'informations . Ce site fournit beaucoup plus d'informations sur la façon de choisir des couleurs pour un contraste approprié, etc., et répertorie les formules mathématiques pour mesurer des choses comme le contraste. Je n'ai pas encore trouvé de code SW ou d'algorithmes de pseudo-code sur ce site, mais je n'ai regardé que quelques pages. Stefano souligne également que le NASA Color Lab utilise le Munsell Color System , un système similaire au HSV mais pondéré pour refléter plus précisément la perception humaine de la couleur plutôt que les propriétés mesurables de la couleur.
Un dernier lien mentionné dans le blog de Stefano est un site appelé Color Trends + Palettes :: COLOURlovers . Ce site n'offre pas plus d'aide pour trouver un algorithme pour choisir des couleurs que Color Scheme Designer ou Kuler, mais il met l'accent sur la qualité moins mesurable des changements actuels dans notre plaisir fugace de certaines couleurs et palettes. Cela vaut la peine d'être visité si vous souhaitez que votre interface utilisateur reflète les dernières tendances.
Encore une fois, consultez le site Web de la NASA et lisez quelques-unes des pages, en particulier celles sur la science des couleurs , et vous devriez être en mesure de trouver un algorithme pratique pour choisir des couleurs qui fonctionnent ensemble et fournissent le contraste souhaité.
EDIT: J'ajouterai des liens utiles supplémentaires dans ce domaine au fur et à mesure que je les trouverai.
la source
En ce qui concerne les outils de génération de couleurs, j'aime mieux http://kuler.adobe.com .
Lorsque vous créez une palette de couleurs (5 couleurs) sur le site, vos options sont Analogique, Monochromatique, Triade, Complémentaire, Composé et Nuances. Bien sûr, vous pouvez personnaliser vos couleurs au lieu de les générer automatiquement. Chaque bloc de couleur vous montre les valeurs numériques en RGB et Hex (ainsi qu'en CMYK / HSV / Lab).
Cela implique un peu plus de connaissances sur la théorie des couleurs. Vous pouvez consulter une belle explication (de base) ici . Voir les roues chromatiques.
En général, les couleurs pastel sont des «couleurs douces». Ce sont le spectre supérieur et inférieur d'une teinte. Voir la section des couleurs pastel générées par l'utilisateur de Kuler .
Pour votre objectif de cartographie, je ne suis pas sûr que des couleurs aléatoires fonctionneraient. Chaque choix de couleur doit être choisi à la main.
La plupart des logiciels graphiques affichent des valeurs hexadécimales pour les couleurs. Hex est une chaîne RVB composée de ## (rouge), ## (vert), ## (bleu).
Par exemple, le rouge pur est FF0000, le bleu pur est # 0000FF. Le violet (vous obtenez en mélangeant le rouge et le bleu) est # FF00FF.
Puisque vous allez créer des graphiques, je vous recommande de visiter les blogs suivants pour vous inspirer:
http://infosthetics.com
http://flowingdata.com
Si vous avez le temps, lisez les leçons de la théorie des couleurs
la source
Une idée que j'ai en tête depuis un moment est de générer des couleurs aussi différentes que possible (dans des limites) pour autant de couleurs que nécessaire. Le tracas supplémentaire étant que si j'ai besoin de quelques couleurs supplémentaires plus tard pour le même graphique (peut-être quelques barres supplémentaires ajoutées), elles doivent s'inscrire dans le même schéma, en gardant les couleurs existantes identiques.
L'idée que j'ai eue est un tour de passe-passe. Imaginez un cercle de couleurs (peut-être chacune étant une teinte différente avec la même saturation et luminosité, bien que vous puissiez définir n'importe quel cercle à travers n'importe quel espace colorimétrique). Au lieu de donner un angle en degrés pour ce cercle, ayez une plage de zéro à 255. En binaire, c'est 00000000 à 11111111. Ajoutez un à un 8 bits 255 et il déborde à zéro, donc il agit naturellement comme une "valeur circulaire" (en termes techniques, l'addition et la soustraction sont modulo 256).
L'astuce consiste à sélectionner la couleur zéro, la couleur une, etc. pour inverser les nombres en bits. Pour ce faire en C, j'utiliserais ...
Ainsi, la séquence 0, 1, 2, 3, 4 est transformée en 0, 128, 64, 192, 32.
Le fait est que vous avez 256 couleurs distinctes, et les premières sont très largement espacées, les dernières étant moins espacées et remplissant les espaces (64 est à mi-chemin entre 0 et 128, 32 à mi-chemin entre 0 et 64 etc).
N'importe quelle largeur de bit pour un "angle" particulier fonctionnera si vous adaptez le bit-reverse, et bien sûr vous pouvez exécuter plusieurs cycles à la fois pour différents paramètres de la couleur (peut-être que la teinte tourne rapidement, mais la saturation tourne plus lentement).
Cela ne laisse que la question de savoir comment vous mappez vos "angles" à des nombres RVB particuliers ou autre chose, ce que je ne suis pas un expert - oh, et la question de savoir si ActionScript prend en charge le bidouillage du bit.
la source
Il y a une question intéressante sur le débordement de pile " Fonction pour créer des roues de couleur " à ce sujet. Vous pouvez également vouloir lire l'un des articles recommandés (PDF).
la source
Cette question m'a fasciné alors j'ai commencé à faire des recherches sur Google. :) Ne vous attendez pas à une réponse basée sur l'expérience.
Fondamentalement, pour faire des calculs avec des couleurs, il est préférable de faire des opérations sur une roue chromatique, qui est représentée au format HSL .
L'auteur de cet article a eu la gentillesse de fournir des informations sur la conversion de RVB en HSL et un exemple de code sur la façon de calculer les couleurs complémentaires.
Si vous êtes chanceux, vous n'aurez pas besoin de comprendre tout cela, si l'une des bibliothèques AS3 maladroitement nommées suivantes fonctionne pour vous.
la source
J'ai utilisé le code suivant. Remarque: il n'utilise aucune théorie sur le fonctionnement de l'œil / cerveau, je voulais juste pouvoir créer un palais de couleurs tel que rouge + vert + bleu = 1, et les couleurs sont à peu près également espacées. Le paramètre "moi" est la couleur sur un total de nombre possible. Cela fonctionne à environ 91 ish num. Notez que je dois exécuter de zéro à num-1. D'autres choses sont possibles, la contrainte donnée ci-dessus est assez arbitraire, mais au moins elle génère des couleurs distinctes - en supposant que vous n'en avez pas besoin de trop.
Encore une fois, il n'utilise pas de théorie des couleurs, il n'y a donc aucune garantie que la distance soit optimisée dans n'importe quel wat, surtout si vous êtes concerné par un utilisateur occasionnel souffrant de daltonisme partiel.
Vous pouvez également simplement définir les variables de couleur primaire sur des nombres aléatoires, mais elles sont encore moins susceptibles de former un ensemble visuellement distinct.
la source
Dans le passé, je l'ai fait en sélectionnant à la main une vingtaine de couleurs plutôt que d'essayer de les générer. À moins que vos graphiques ne soient très complexes, vous n'en avez généralement pas besoin de plus. Cette approche, bien que simple, vous permet également d'attribuer la même couleur aux mêmes facteurs dans votre graphique (par exemple, vous pouvez toujours faire des «ventes» la même couleur, ce qui rend les graphiques plus faciles à interpréter).
la source
J'aime échantillonner les couleurs des photos . En tant que designer, je fais cela manuellement. En tant que programmeur, je choisis généralement un pixel aléatoire. Si vous voulez plus de contrôle, vous pouvez créer vos propres «photos» qui respectent un certain ensemble de règles.
la source
J'ai toujours aimé les utilitaires en ligne de VisiBone car vous pouvez sélectionner plusieurs couleurs et évaluer de manière interactive à quel point elles s'affrontent: http://www.visibone.com/colorlab/
Je dis à quel point ils s'affrontent parce que je connais le contraste des couleurs tel qu'il s'applique à l'art "analogique" et j'ai été surpris par la façon dont les couleurs que j'ai choisies se sont heurtées les unes aux autres dans l'art numérique. (De toute évidence, je ne suis pas un designer)
la source