我试图做一个有限元(FEM),我有问题,以显示预期的结果。
我可以用一个多边形(三角形,四边形)做一个colourfill,但问题是当我对另一个多边形做同样的事情时,颜色图会自动重置,它有不同的值,这意味着我在一个节点上得到的相同张力,从一边到另一边有不同的颜色。
tri1 = np.array([[0.25,0.1],[1,2],[0.5,2]])
val1 = np.array([1,3,2])
tri2 = np.array([[0.5,2],[1,2],[1.2,3.75]])
val2 = np.array([2,3,6])
mat1 = np.c_[tri1,val1]
mat2 = np.c_[tri2,val2]
fig,ax = plt.subplots()
def colourfill(mat_global,ax, label = None):
import matplotlib.tri as tri
triangulacion = tri.Triangulation(mat_global[:,0],mat_global[:,1])
pc = ax.tripcolor(triangulacion, mat_global[:,2], cmap='viridis', shading='gouraud')
cbar = plt.colorbar(pc)
cbar.set_label(label)
colourfill(mat1,ax,'Testing')
colourfill(mat2,ax)
plt.show()
这是输出:
我希望,首先,有相同的规模的颜色,也是一个很好的颜色条。
1条答案
按热度按时间mrfwxfqh1#
您可以在
tripcolor
函数中指定vmin
和vmax
:这将返回:
**编辑:*而不是像我在上面的例子中那样硬编码
vmin
和vmax
,你可以从mat1[:,2]
和mat2[:,2]
矩阵中的最小值和最大值导出它们, 例如 *: