for i in range(gmm.n_components): plt.figure(i) alg = TotalGreedyCoverage(aoi2, out_trajectories2, 4, debug=False) mrs = alg.solution() assert mrs is not None, "solution not found" mrs.plot("TC-GaP") 经过for循环生成的多张图片plt.figure(i)上包含所有的轨迹曲线,不采用子图形式,如何能将所有轨迹叠加在一张图片上,最终在图Figure上显示所有的轨迹曲线
时间: 2024-02-23 17:00:16 浏览: 142
你可以在 for 循环之前创建一个空的 figure,并在每次循环中将轨迹曲线添加到同一张 figure 上,最后只需要在 figure 上调用 show() 方法即可显示所有轨迹曲线。具体代码如下:
```
import matplotlib.pyplot as plt
# 创建空的 figure
fig = plt.figure()
for i in range(gmm.n_components):
# 在同一张 figure 上绘制轨迹曲线
alg = TotalGreedyCoverage(aoi2, out_trajectories2, 4, debug=False)
mrs = alg.solution()
assert mrs is not None, "solution not found"
mrs.plot("TC-GaP", fig=fig)
# 显示所有轨迹曲线
plt.show()
```
这样就能在同一张 figure 上显示所有的轨迹曲线。注意,需要将 figure 对象传递给 `plot()` 方法,以便将轨迹曲线添加到同一张 figure 上。
相关问题
for i in range(gmm.n_components): plt.figure(i) alg = TotalGreedyCoverage(aoi2, out_trajectories2, 4, debug=False) mrs = alg.solution() # get multi round solution assert mrs is not None, "solution not found" mrs.plot("TC-GaP") 经过for循环生成的多张图片plt.figure(i)上的曲线,如何能叠加在一张图片上
你可以在循环外先创建一个新的 figure 对象,然后在循环中使用 subplot 函数将每个子图添加到这个新的 figure 中,最终将所有的曲线叠加在同一张图片上。修改后的代码如下所示:
```
import matplotlib.pyplot as plt
fig = plt.figure() # 创建新的 figure 对象
for i in range(gmm.n_components):
plt.subplot(gmm.n_components, 1, i+1) # 添加子图
alg = TotalGreedyCoverage(aoi2, out_trajectories2, 4, debug=False)
mrs = alg.solution()
assert mrs is not None, "solution not found"
mrs.plot("TC-GaP")
plt.tight_layout() # 调整子图之间的间距
plt.show() # 显示图像
```
其中,`plt.subplot(gmm.n_components, 1, i+1)` 函数用于在当前 figure 对象中添加一个 `gmm.n_components` 行、1 列的子图,并将当前子图的编号设为 `i+1`。`plt.tight_layout()` 函数用于调整子图之间的间距,使得它们更加紧凑。最后,使用 `plt.show()` 函数显示图像。
for i in range(gmm.n_components): target = [(x, y) for x, y in random_target_points[a == i]] center_target = [(x, y) for x, y in [centers[i]]] aoi = AoI(center_target, target, width_area, height_area, 5) depots = aoi.depots trajectories_builder = DroneTrajGeneration(aoi) for drone in drones2: trajs2 = trajectories_builder.compute_trajectories(drone, depots[i]),报错 trajs2 = trajectories_builder.compute_trajectories(drone, depots[i]) IndexError: list index out of range,为什么
这个错误通常是因为您正在尝试使用一个超出列表范围的索引来访问列表中的元素。这可能是因为您的depots列表为空或者索引i超出了depots列表的范围。
建议您检查depots列表是否为空,并确保i的值小于depots列表的长度。如果depots列表为空,您可以尝试使用条件语句来避免出现这个错误。如果i的值超出了depots列表的范围,您可以尝试打印一下depots列表的长度和i的值来排查问题。
阅读全文