You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中绘制带色条的三角区域(类似Matlab patch)?

Python实现带色条的三角区域绘制(类似Matlab patch函数)

要实现你要的效果,直接用plt.fill没法给每个三角形单独分配颜色并生成对应色条,推荐用matplotlib的PolyCollection类,它专门用来绘制多个多边形,支持根据数值映射颜色,完全对标Matlab的patch(x,y,c)。

下面是修正后的完整代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import PolyCollection

# 原始坐标数据
a1 = [0.90899658,1.10720062,1.47019958,0.90899658,1.47019958,3.14479828,0.90899658,3.14479828,3.17749786,0.90899658]
b1 = [-0.38689995,0.22739983,0.69180012,-0.38689995,0.69180012,-0.34249973,-0.38689995,-0.34249973,-0.38329983,-0.38689995]

# 构造每个三角形的顶点坐标列表
a2 = a1[:9]
b2 = b1[:9]
a3 = np.reshape(a2, (3,3))
b3 = np.reshape(b2, (3,3))
# 把每个三角形的x、y坐标配对,形成多边形顶点数组
triangles = [np.column_stack((a3[i], b3[i])) for i in range(3)]

# 对应每个三角形的颜色数据
c1 = [0.234, 0.034, 0.006]

# 创建绘图对象
fig, ax = plt.subplots()
# 创建多边形集合,设置颜色映射和对应数值
poly_coll = PolyCollection(triangles, array=np.array(c1), cmap='viridis', edgecolors='black')
ax.add_collection(poly_coll)

# 添加色条,关联多边形集合
plt.colorbar(poly_coll, ax=ax, label='Triangle Value')

# 自动调整坐标轴范围,确保所有三角形都显示
ax.autoscale()

plt.xlabel('X')
plt.ylabel('Y')
plt.title('Colored Triangles with Colorbar')
plt.show()

关键说明:

  • PolyCollection接受一个多边形列表,每个元素是该多边形的顶点坐标数组(形状为(n,2)),这里我们把每个三角形的x和y坐标用np.column_stack配对。
  • array参数传入c1,用来指定每个多边形对应的颜色数值,matplotlib会自动根据你选的cmap(颜色映射)给每个三角形上色。
  • 添加色条时必须把poly_coll对象传给plt.colorbar,这样色条才会和三角形的颜色对应起来。
  • ax.autoscale()会自动调整坐标轴范围,避免部分三角形被截断。

内容的提问来源于stack exchange,提问作者Vijay Kumar Sagar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 18:21:27