密谋绘制错误的情节

时间:2018-11-01 16:28:58

标签: javascript python plot plotly mesh

我正在为我用Python开发的有限元程序开发一个Web应用程序(使用html和js)。

我要拥有的功能之一是能够显示用户导入的有限元网格。我在网上搜索过,发现plotly是执行此操作的理想库,但是我遇到了一些问题...为了证明这一点,我将展示我所获得的(以及我应获得的)当我尝试绘制4个元素的1x1正方形时:

expectations

如您所见,元素之一被切成两半,不应该切成两半。我发现,plotly没有绘制正确的网格的原因是由于其算法:基本上,您有两个数组(xy),它们包含点坐标的有序序列。因此,要在(0,0)和(0,1)之间绘制一条线,您的数组必须像:x=[0,0]y=[0,1]。 问题是我无法做出将我的“网格格式”转换为plotly的“网格格式”的好的算法。

这是上面示例的网格格式:

mesh

nodes=[[0, 0],
       [1, 0],
       [1, 1],
       [0, 1],
       [0.5, 0],
       [1, 0.5],
       [0.5, 1],
       [0, 0.5],
       [0.5, 0.5]]

elements: [[0, 4, 8, 7],
           [7, 8, 6, 3],
           [4, 1, 5, 8],
           [8, 5, 2, 6]]

我使用的算法(一个愿望不起作用)如下:

y_plotly=[] 
z_plotly=[] 
for element in elements:
    for node in range(4):

        y_plotly.append(nodes[element[node]][0])
        z_plotly.append(nodes[element[node]][1]) 

    y_plotly.append(nodes[element[0]][0])
    z_plotly.append(nodes[element[0]][1])

你们能帮我解决这个算法吗?在此先感谢!

0 个答案:

没有答案