Lors du dessin de plusieurs figures avec matplotlib J'ai essayé de savoir comment ne pas spécifier «rouge» ou «bleu» un par un.
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
#Création de données graphiques
#Carré de base
x=np.array([-0.5,0.5,0.5,-0.5])
y=np.array([0,0,1,1])
#Préparez N carrés
N=3
#Le nombre de colonnes
cn=10
xl=list()
yl=list()
for i in range(N):
xl.append(x+1.2*(i%cn))
yl.append(y-1.2*int(i/cn))
#Dessin
fig = plt.figure()
ax = fig.add_subplot(111)
plt.axes().set_aspect('equal')
poly = plt.fill(xl[0],yl[0],fc="red")#ici"red"Que faire si vous ne voulez pas écrire
poly = plt.fill(xl[1],yl[1],fc="green")
poly = plt.fill(xl[2],yl[2],fc="blue")
plt.show()
Comme mentionné ci-dessus, c'est bien s'il n'y a que 3 types de chiffres, mais je ne peux pas penser au nombre de couleurs à utiliser en fonction du nombre de chiffres, ou spécifier "rouge", "vert", "bleu". Il doit y avoir un bon moyen simplement en ne sachant pas ...
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
#Carré de base
x=np.array([-0.5,0.5,0.5,-0.5])
y=np.array([0,0,1,1])
#Préparez N carrés
N=10
#Le nombre de colonnes
cn=10
xl=list()
yl=list()
for i in range(N):
xl.append(x+1.2*(i%cn))
yl.append(y-1.2*int(i/cn))
cmap = plt.get_cmap("tab10") #Spécifiez le type de carte de couleurs ici
print(cmap)
#Dessin
fig = plt.figure()
ax = fig.add_subplot(111)
plt.axes().set_aspect('equal')
for xx,yy,cc in zip(xl,yl,range(N)):
poly = plt.fill(xx,yy,fc=cmap(cc))
Une carte de couleur fixe est préparée dans pyplot de matplotlib, Vous pouvez l'appeler avec la fonction get_cmap. En plus de ** tab10 **, ** Set1 ** semble être facile à utiliser comme type de carte de couleurs.
Les détails sont décrits en détail dans les articles suivants. Plusieurs façons de spécifier la Nième couleur du cycle de couleur avec matplotlib
Voir la référence pour le type de carte disponible. color example code: colormaps_reference.py
Je n'ai peut-être pas besoin de plus de 10 mais j'ai réfléchi à quoi faire.
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import colorsys
#Carré de base
x=np.array([-0.5,0.5,0.5,-0.5])
y=np.array([0,0,1,1])
#Préparez N carrés
N=20
#Le nombre de colonnes
cn=5
xl=list()
yl=list()
for i in range(N):
xl.append(x+1.2*(i%cn))
yl.append(y-1.2*int(i/cn))
#Création d'une carte de couleurs==========================
hexs=list()
for i in range(N):
rgb=colorsys.hsv_to_rgb(i/N, 1, 1)#(h,s,v)À(r,g,b)Conversion en
hexs.append(matplotlib.colors.rgb2hex(rgb))#(r,g,b)Vers le code couleur hexadécimal
#Dessin
fig = plt.figure()
ax = fig.add_subplot(111)
plt.axes().set_aspect('equal')
for xx,yy,cc in zip(xl,yl,hexs):
poly = plt.fill(xx,yy,fc=cc)
plt.show()
RVB est familier avec la couleur, qui est exprimée par le degré de mélange des trois composants rouge, vert et bleu, mais il existe une expression appelée HSV, qui est à nouveau exprimée par la teinte et la luminosité. En divisant la teinte uniformément, essayez de créer une carte de couleurs de taille arbitraire avec des couleurs différentes.
Voir ci-dessous pour une explication facile à comprendre du HSV Espace colorimétrique HSV
Fondamentalement, il ne semble y avoir aucun problème si vous entrez en utilisant tab10. La carte de couleurs faite par vous-même peut être belle à première vue, Je ne pense pas que le vert soit indiscernable de celui avec le plus jeune nombre lorsqu'il est réellement utilisé.
Je veux modifier s'il y a une meilleure façon.
(Quand j'étudiais comment créer un jeu de couleurs facile à voir, il semble y avoir un design universel *** couleur ***.)
Recommended Posts