Pour éviter de passer du temps à colorier des personnages dessinés avec du python

Coloration de formes avec matplotlib

Lors du dessin de plusieurs figures avec matplotlib J'ai essayé de savoir comment ne pas spécifier «rouge» ou «bleu» un par un.

Introduction Dessiner une figure à l'aide du remplissage matplotlib

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()

cap1.PNG

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 ...

Si vous utilisez 10 chiffres ou moins, il est beau d'utiliser tab10

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))


cap2.PNG

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

Que faire si vous voulez en sortir même 10 ou plus magnifiquement

Essayez de créer votre propre carte de couleurs

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()

cap3.PNG

Division égale simple de la teinte

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

Résumé

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

Pour éviter de passer du temps à colorier des personnages dessinés avec du python
Comment mesurer le temps d'exécution avec Python Partie 1
Comment mesurer le temps d'exécution avec Python, partie 2
Comment mesurer le temps de lecture d'un fichier mp3 avec python
Connectez-vous à BigQuery avec Python
Connectez-vous à Wikipedia avec Python
Publiez sur Slack avec Python 3
Mesure du temps d'exécution avec Python avec
Basculer python vers 2.7 avec des alternatives
Écrire en csv avec Python
Synchronisation de l'heure (Windows) avec Python
J'ai créé un package pour filtrer les séries chronologiques avec python
Python: comment utiliser async avec
Lien pour commencer avec python
[Python] Ecrire dans un fichier csv avec Python
Essayez d'exploiter Facebook avec Python
Sortie vers un fichier csv avec Python
Convertir la liste en DataFrame avec python
Conversion MP3 → WAV avec Python
Pour faire une récursion avec Python2
Comment démarrer avec Python
Python (de la première fois à l'exécution)
Que faire avec la sortie de PYTHON?
Comment calculer la date avec python
Publiez facilement sur Twitter avec Python 3
Je veux déboguer avec Python
Comment écrire hors ligne en temps réel Résolution des problèmes F01 avec Python
Comment calculer "xx time" en un seul coup avec Python Timedelta
Défi pour créer un rapport de liste de l'axe des temps avec l'API Toggl et Python
Comment écrire hors ligne en temps réel J'ai essayé de résoudre E11 avec python
Comment obtenir la différence de date et d'heure en secondes avec Python
Comment dessiner une ligne verticale sur une carte de chaleur dessinée avec Python Seaborn
Comment écrire en temps réel hors ligne J'ai essayé de résoudre E12 avec python
Essayez de reproduire un film couleur avec Python
Essayez de vous connecter à qiita avec Python
Changer l'environnement Python 64 bits en environnement 32 bits avec Anaconda
Reconnaissance vocale en anglais avec python [speech to text]
mail html avec image à envoyer avec python
Mémo pour demander des KPI avec python
python à retenir uniquement avec bonjour, mondes
Sortir les caractères de couleur en joli avec python
Introduction au remplissage d'image Python Remplissage d'image à l'aide d'ImageDataGenerator
Sortie du journal Python vers la console avec GAE
Manuel Python privé (mis à jour de temps en temps)
Convertir des données Excel en JSON avec python
Convertir Hiragana en Romaji avec Python (bêta)
Fractal pour faire et jouer avec Python
Je voulais résoudre ABC160 avec Python
Decorator pour éviter UnicodeEncodeError dans Python 3 print ()
Connectez-vous à MySQL avec Python dans Docker
Caméra à pixel unique à expérimenter avec Python
Convertissez des données FX 1 minute en données 5 minutes avec Python
Je veux analyser les journaux avec Python
Comment faire un test de sac avec python
Je veux jouer avec aws avec python
Comment afficher le japonais python avec lolipop
Essayer de gérer SQLite3 avec Python [Note]