Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中将三维多边形中的独立第四个变量绘制为彩色贴图_Python_Matplotlib_Colormap - Fatal编程技术网

在Python中将三维多边形中的独立第四个变量绘制为彩色贴图

在Python中将三维多边形中的独立第四个变量绘制为彩色贴图,python,matplotlib,colormap,Python,Matplotlib,Colormap,我用python绘制了一个3d几何图形,使用了4个点并用符合以下规则的线连接它们: 点1与点2相连。 点2与点3相连。 点3与点4相连。 点4与点1相连。 在下面的链接和示例中,可以看到5个不同的多边形被绘制成图形 现在,对于每个点(上图中描述为Ui),我有一个变量,我想通过插值将其绘制为彩色贴图。我已经看过几篇关于如何使用ax.plot\u surface函数实现这一点的文章,但是我还没有想到如何在我的具体示例中使用它,所以我想知道是否还有其他方法 我想要实现的一个例子如下: 该图插值第四

我用python绘制了一个3d几何图形,使用了4个点并用符合以下规则的线连接它们: 点1与点2相连。 点2与点3相连。 点3与点4相连。 点4与点1相连。 在下面的链接和示例中,可以看到5个不同的多边形被绘制成图形

现在,对于每个点(上图中描述为Ui),我有一个变量,我想通过插值将其绘制为彩色贴图。我已经看过几篇关于如何使用ax.plot\u surface函数实现这一点的文章,但是我还没有想到如何在我的具体示例中使用它,所以我想知道是否还有其他方法

我想要实现的一个例子如下:

该图插值第四个变量,该变量为每条线交点提供,以构建连续的彩色贴图。这是使用matlab函数
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