首页  >  文章  >  后端开发  >  如何为 10 个连续点的每段绘制不同颜色的线?

如何为 10 个连续点的每段绘制不同颜色的线?

Linda Hamilton
Linda Hamilton原创
2024-10-31 01:53:02368浏览

How to Plot a Line with Varying Colors for Each Segment of 10 Consecutive Points?

以不同颜色绘制一条线

问题陈述

给定两个列表,latt 和 lont,目标是绘制一条线,其中每个列表10个连续点的线段用不同的颜色表示。

解决方案

线段数量有限

如果线段数量很少,例如 10 个或更少,一个简单的方法是使用循环以唯一的颜色绘制每个线段。

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

大量线段

对于大量线段,使用循环可能会很慢。相反,创建一个 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>

选择颜色

对于这两种方法,我们使用“gist_ncar”颜色图来生成唯一的颜色。有关其他颜色图选项,请参阅此页面:http://matplotlib.org/examples/color/colormaps_reference.html

以上是如何为 10 个连续点的每段绘制不同颜色的线?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn