Home > Article > Backend Development > How to Plot a Line with Varying Colors for Each Segment of 10 Consecutive Points?
Given two lists, latt and lont, the goal is to plot a single line where each segment of 10 consecutive points is represented in a different color.
Limited Number of Line Segments
If the number of line segments is small, such as 10 or less, a simple approach is to use a loop to plot each segment with a unique color.
<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>
Large Number of Line Segments
For a large number of line segments, using a loop can be slow. Instead, create a LineCollection object.
<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>
For both approaches, we use the "gist_ncar" colormap to generate unique colors. Refer to this page for other colormap options: http://matplotlib.org/examples/color/colormaps_reference.html
The above is the detailed content of How to Plot a Line with Varying Colors for Each Segment of 10 Consecutive Points?. For more information, please follow other related articles on the PHP Chinese website!