Beim Zeichnen mehrerer Figuren mit matplotlib Ich habe versucht herauszufinden, wie man nicht "rot" oder "blau" einzeln angibt.
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
#Grafische Datenerstellung
#Basisquadrat
x=np.array([-0.5,0.5,0.5,-0.5])
y=np.array([0,0,1,1])
#Bereiten Sie N Quadrate vor
N=3
#Anzahl der Spalten
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))
#Zeichnung
fig = plt.figure()
ax = fig.add_subplot(111)
plt.axes().set_aspect('equal')
poly = plt.fill(xl[0],yl[0],fc="red")#Hier"red"Was tun, wenn Sie nicht schreiben möchten?
poly = plt.fill(xl[1],yl[1],fc="green")
poly = plt.fill(xl[2],yl[2],fc="blue")
plt.show()
Wie oben erwähnt, ist es in Ordnung, wenn es nur 3 Arten von Figuren gibt, aber ich kann mir nicht vorstellen, wie viele Farben entsprechend der Anzahl der Figuren verwendet werden sollen, oder "rot", "grün", "blau" angeben. Es muss einen guten Weg geben, nur nicht zu wissen ...
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
#Basisquadrat
x=np.array([-0.5,0.5,0.5,-0.5])
y=np.array([0,0,1,1])
#Bereiten Sie N Quadrate vor
N=10
#Anzahl der Spalten
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") #Geben Sie hier den Farbkartentyp an
print(cmap)
#Zeichnung
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))
Eine feste Farbkarte wird im Pyplot von Matplotlib erstellt. Sie können es mit der Funktion get_cmap aufrufen. Zusätzlich zu ** tab10 ** scheint ** Set1 ** als Typ der Farbkarte einfach zu verwenden zu sein.
Details werden in den folgenden Artikeln ausführlich beschrieben. Verschiedene Möglichkeiten, die N-te Farbe des Farbzyklus mit matplotlib anzugeben
In der Referenz finden Sie, welche Art von Karte verfügbar ist. color example code: colormaps_reference.py
Ich brauche vielleicht nicht mehr als 10, aber ich habe mir überlegt, was ich tun soll.
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import colorsys
#Basisquadrat
x=np.array([-0.5,0.5,0.5,-0.5])
y=np.array([0,0,1,1])
#Bereiten Sie N Quadrate vor
N=20
#Anzahl der Spalten
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))
#Farbkartenerstellung==========================
hexs=list()
for i in range(N):
rgb=colorsys.hsv_to_rgb(i/N, 1, 1)#(h,s,v)Zu(r,g,b)Umstellung auf
hexs.append(matplotlib.colors.rgb2hex(rgb))#(r,g,b)Hexadezimaler Farbcode
#Zeichnung
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()
RGB ist mit der Farbe vertraut, die dadurch ausgedrückt wird, wie stark die drei Komponenten Rot, Grün und Blau gemischt sind. Es gibt jedoch einen Ausdruck namens HSV, der wiederum durch Farbton und Helligkeit ausgedrückt wird. Versuchen Sie, durch gleichmäßige Verteilung des Farbtons eine Farbkarte beliebiger Größe mit verschiedenen Farben zu erstellen.
Im Folgenden finden Sie eine leicht verständliche Erklärung des HSV HSV-Farbraum
Grundsätzlich scheint es kein Problem zu geben, wenn Sie mit tab10 eingeben. Die selbst erstellte Farbkarte kann auf den ersten Blick schön aussehen. Ich denke nicht, dass Grün von dem mit der jüngeren Zahl nicht zu unterscheiden ist, wenn es tatsächlich verwendet wird.
Ich möchte bearbeiten, wenn es einen besseren Weg gibt.
(Als ich untersuchte, wie man ein Farbschema erstellt, das leicht zu erkennen ist, scheint es ein *** universelles Farbdesign *** zu geben.)
Recommended Posts