Changements de couleur par défaut #

Comme discuté en détail ailleurs [insérer des liens], jetest une palette de couleurs empiriquement mauvaise et ne devrait pas être la palette de couleurs par défaut. En raison de la position selon laquelle changer l'apparence de l'intrigue rompt la compatibilité descendante, ce changement a été reporté bien plus longtemps qu'il n'aurait dû l'être. En plus de changer la carte de couleurs par défaut, nous prévoyons de saisir l'occasion de changer le cycle de couleurs par défaut sur les tracés et d'adopter une palette de couleurs différente pour les tracés remplis ( imshow, pcolor, contourf, etc.) et pour les tracés de type nuage de points.

Carte de couleurs par défaut de la carte thermique #

Le choix d'une nouvelle palette de couleurs est un terrain fertile pour le délestage ("Non, ça devrait être _cette_ couleur"), nous avons donc proposé un ensemble de critères (via Nathaniel Smith) pour évaluer les palettes de couleurs proposées.

  • il devrait s'agir d'une palette de couleurs séquentielle, car les palettes de couleurs divergentes sont vraiment trompeuses à moins que vous ne sachiez où se trouve le "centre" des données, et pour une palette de couleurs par défaut, nous ne le ferons généralement pas.

  • il doit être perceptuellement uniforme, c'est-à-dire que les jugements subjectifs humains sur la distance entre les couleurs proches doivent correspondre aussi linéairement que possible à la différence entre les valeurs numériques qu'elles représentent, au moins localement.

  • il doit avoir une rampe de luminance perceptuellement uniforme, c'est-à-dire que si vous convertissez en niveaux de gris, il doit toujours être uniforme. Ceci est utile à la fois en termes pratiques (les imprimantes à niveaux de gris sont toujours une chose !) et parce que la luminance est un indice très fort et naturel de la magnitude.

  • il devrait également avoir une sorte de variation de teinte, car la variation de teinte est un indice supplémentaire très utile pour la perception, avoir deux indices vaut mieux qu'un, et il n'y a aucune raison de ne pas le faire.

  • la variation de teinte doit être choisie pour produire des résultats raisonnables, même pour les téléspectateurs souffrant des types de daltonisme les plus courants. (Ce qui exclut des choses comme le rouge au vert.)

  • Pour les points bonus, ce serait bien de choisir une rampe de teinte qui fonctionne toujours si vous jetez la variation de luminance, car nous pourrions alors utiliser la version avec une luminance variable pour les tracés 2d, et la version avec juste une variation de teinte pour les tracés 3d. (Dans les tracés 3D, vous voulez vraiment réserver le canal de luminance pour l'éclairage/l'ombrage, car votre cerveau est vraiment bon pour extraire la forme 3D de la variation de luminance. Si la surface 3D elle-même a une luminance extrêmement variable, cela bloque la capacité de voir la forme. )

  • Ne pas enfreindre une adresse IP existante

Exemple de scénario #

Palettes de couleurs proposées #

Palette de couleurs de dispersion par défaut #

Pour les applications de type carte thermique, il peut être souhaitable de couvrir autant que possible l'échelle de luminance, cependant, lors du mappage des couleurs des marqueurs, avoir des marqueurs trop proches du blanc peut être un problème. Pour cette raison, nous proposons d'utiliser une palette de couleurs différente (mais peut-être liée) à la carte thermique pour les marqueurs. Les paramètres de conception sont les mêmes que ci-dessus, mais avec une variation de luminance plus limitée.

Exemple de scénario #

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(1234)

fig, (ax1, ax2) = plt.subplots(1, 2)

N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = np.pi * (15 * np.random.rand(N))**2  # 0 to 15 point radiuses

ax1.scatter(x, y, s=area, c=colors, alpha=0.5)


X,Y = np.meshgrid(np.arange(0, 2*np.pi, .2),
                  np.arange(0, 2*np.pi, .2))
U = np.cos(X)
V = np.sin(Y)
Q = ax2.quiver(X, Y, U, V, units='width')
qd = np.random.rand(np.prod(X.shape))
Q.set_array(qd)

Palettes de couleurs proposées #

Cycle de couleurs / nuancier qualitatif #

Lors du traçage de lignes, il est souvent souhaitable de tracer plusieurs lignes ou artistes qui doivent être distingués, mais il n'y a pas d'ordre inhérent.

Exemple de scénario #

import numpy as np
import matplotlib.pyplot as plt

fig, (ax1, ax2) = plt.subplots(1, 2)

x = np.linspace(0, 1, 10)

for j in range(10):
    ax1.plot(x, x * j)


th = np.linspace(0, 2*np.pi, 1024)
for j in np.linspace(0, np.pi, 10):
    ax2.plot(th, np.sin(th + j))

ax2.set_xlim(0, 2*np.pi)

Cycle de couleur proposé #