Maison > Article > développement back-end > Comment tracer une ligne avec des couleurs variables pour chaque segment de 10 points consécutifs ?
Étant donné deux listes, latt et lont, l'objectif est de tracer une seule ligne où chacune le segment de 10 points consécutifs est représenté dans une couleur différente.
Nombre limité de segments de ligne
Si le nombre de segments de ligne est petit , par exemple 10 ou moins, une approche simple consiste à utiliser une boucle pour tracer chaque segment avec une couleur unique.
<code class="python">import numpy as np import matplotlib.pyplot as plt # Generate random colors def uniqueish_color(): return plt.cm.gist_ncar(np.random.random()) # Plot the line segments xy = (np.random.random((10, 2)) - 0.5).cumsum(axis=0) fig, ax = plt.subplots() for start, stop in zip(xy[:-1], xy[1:]): x, y = zip(start, stop) ax.plot(x, y, color=uniqueish_color()) plt.show()</code>
Grand nombre de segments de ligne
Pour un grand nombre de segments de ligne, l’utilisation d’une boucle peut être lente. Au lieu de cela, créez un objet LineCollection.
<code class="python">import numpy as np import matplotlib.pyplot as plt from matplotlib.collections import LineCollection # Generate the line segments xy = (np.random.random((1000, 2)) - 0.5).cumsum(axis=0) xy = xy.reshape(-1, 1, 2) segments = np.hstack([xy[:-1], xy[1:]]) # Create a LineCollection object fig, ax = plt.subplots() coll = LineCollection(segments, cmap=plt.cm.gist_ncar) # Set the color array coll.set_array(np.random.random(xy.shape[0])) # Add the LineCollection to the axes ax.add_collection(coll) ax.autoscale_view() # Display the plot plt.show()</code>
Pour les deux approches, nous utilisons la palette de couleurs "gist_ncar" pour générer des couleurs uniques. Reportez-vous à cette page pour d'autres options de palette de couleurs : http://matplotlib.org/examples/color/colormaps_reference.html
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!