在Python中将三维多边形中的独立第四个变量绘制为彩色贴图
我用python绘制了一个3d几何图形,使用了4个点并用符合以下规则的线连接它们: 点1与点2相连。 点2与点3相连。 点3与点4相连。 点4与点1相连。 在下面的链接和示例中,可以看到5个不同的多边形被绘制成图形 现在,对于每个点(上图中描述为Ui),我有一个变量,我想通过插值将其绘制为彩色贴图。我已经看过几篇关于如何使用ax.plot\u surface函数实现这一点的文章,但是我还没有想到如何在我的具体示例中使用它,所以我想知道是否还有其他方法 我想要实现的一个例子如下: 该图插值第四个变量,该变量为每条线交点提供,以构建连续的彩色贴图。这是使用matlab函数在Python中将三维多边形中的独立第四个变量绘制为彩色贴图,python,matplotlib,colormap,Python,Matplotlib,Colormap,我用python绘制了一个3d几何图形,使用了4个点并用符合以下规则的线连接它们: 点1与点2相连。 点2与点3相连。 点3与点4相连。 点4与点1相连。 在下面的链接和示例中,可以看到5个不同的多边形被绘制成图形 现在,对于每个点(上图中描述为Ui),我有一个变量,我想通过插值将其绘制为彩色贴图。我已经看过几篇关于如何使用ax.plot\u surface函数实现这一点的文章,但是我还没有想到如何在我的具体示例中使用它,所以我想知道是否还有其他方法 我想要实现的一个例子如下: 该图插值第四
fill3()
我附上以下任意几何体的示例,其中为4个点中的每个点定义了第4个变量:
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
import numpy as np
def node_labels(ax,Nodes_Coord):
c1=0
for i in Nodes_Coord:
ax.text(i[0],i[1],i[2],'U{}'.format(c1+1))
c1=c1+1
def print_Geometry(Element_Connect,Nodes_Coord,ax,c):
# fig = plt.figure(Fig_Label)
# #Create a 3d cart. axis
# ax = fig.add_subplot(111, projection='3d')
#Plot the lines which compose the element:
for i in range(Element_Connect.shape[0]): #Number of elements
El_Con=Element_Connect[i]
for j in range(Element_Connect.shape[1]): #Number of nodes per element
if j==3:
ax.plot([Nodes_Coord[El_Con-1][3][0],Nodes_Coord[El_Con-1][0][0]],
[Nodes_Coord[El_Con-1][3][1],Nodes_Coord[El_Con-1][0][1]],
[Nodes_Coord[El_Con-1][3][2],Nodes_Coord[El_Con-1][0][2]],color="k",
linewidth=0.6)
else:
ax.plot([Nodes_Coord[El_Con-1][j][0],Nodes_Coord[El_Con-1][j+1][0]],
[Nodes_Coord[El_Con-1][j][1],Nodes_Coord[El_Con-1][j+1][1]],
[Nodes_Coord[El_Con-1][j][2],Nodes_Coord[El_Con-1][j+1][2]],color="k",
linewidth=0.6)
x=Nodes_Coord[Element_Connect[i]-1,0]
y=Nodes_Coord[Element_Connect[i]-1,1]
z=Nodes_Coord[Element_Connect[i]-1,2]
verts = [list(zip(x,y,z))]
ax.add_collection3d(Poly3DCollection(verts,color=c,alpha=0.2))
Nodes_Coord=np.array([[4, 7, 0],
[0, 10, 0],
[0, 0, 0],
[2,2,0]])
Element_Connect = np.array([[1,2,3,4]])
fig = plt.figure(0)
#Create a 3d cart. axis
ax = fig.add_subplot(111, projection='3d')
ax.set_zlim(-1, 1)
#Plot each element
print_Geometry(Element_Connect,Nodes_Coord,ax,'b')
node_labels(ax,Nodes_Coord)
#Now, the 4th variable at each point is:
Nodes_Elemental_VM=np.array=([5958.66,3436.33,1602.692745.27])
#5958.6= Is the corresponding 4th variable for the first point.
#PRINT THE GEOMETRY WITH A COLORMAP GIVEN BY AN INTERPOLATION OF Nodes_Elemental_VM