matplotlib tripcolor给出了长三角形

时间:2015-10-08 07:49:33

标签: python matplotlib

我有一系列x,y和z数据,我想用matplotlib.tripcolor绘制,但是当看起来应该可以制作更加平衡的三角形时,我会得到一些非常长的三角形。我的数据如下:

x:

array([ 129.,  341.,   65.,  210.,  213.,  315.,  167.,  251.,  103.,
         39.,   82.,  294.,  146.,  358.,  210.,  190.,  211.,  359.,
        147.,  338.,  126.,  275.,   63.,   10.,  158.,  306.,   74.,
        222.,  297.,   30.,  262.,  114.,  326.,  178.,   30.,   85.,
        233.,  318.,  106.,   21.,  169.,  190.,  254.,   42.,  265.,
        349.,   53.,  201.,  338.,  190.,  126.,   42.,  254.,  277.,
         10.,  222.,  179.,   31.,  327.,  306.,  158.,  243.,   95.,
        341.,   65.,  213.,    2.,  150.,  298.,   86.,  234.,   74.,
        129.,  277.,  315.,  103.,  251.,   39.,  188.,  336.,  124.,
        272.,   60.,  254.,   85.,  297.,  169.,   21.,   53.,  265.,
        286.,  138.,  349.,  201.,   10.,  222.,   74.,  167.,  178.,
        326.,  283.,  347.,  199.,  114.,  262.,  103.,  167.,  315.,
        231.,   19.,  294.,   82.,  358.,  146.,  233.,   42.])

y:
array([ 7.267,  8.034,  5.733,  8.034,  4.966,  7.267,  8.034,  5.733,
        6.5  ,  4.966,  4.966,  5.733,  6.5  ,  7.267,  8.034,  6.5  ,
        2.665,  1.898,  1.131,  5.733,  4.966,  4.199,  3.432,  6.5  ,
        5.733,  4.966,  8.034,  7.267,  8.034,  8.034,  4.966,  5.733,
        6.5  ,  7.267,  8.034,  7.267,  6.5  ,  4.199,  3.432,  5.733,
        4.966,  1.131,  2.665,  1.898,  7.267,  4.966,  6.5  ,  5.733,
        5.733,  6.5  ,  4.966,  7.267,  8.034,  6.5  ,  6.5  ,  7.267,
        1.898,  2.665,  1.131,  4.966,  5.733,  3.432,  4.199,  8.034,
        5.733,  4.966,  4.199,  3.432,  2.665,  1.898,  1.131,  8.034,
        7.267,  6.5  ,  7.267,  6.5  ,  5.733,  4.966,  4.199,  3.432,
        2.665,  1.898,  1.131,  8.034,  7.267,  8.034,  4.966,  5.733,
        6.5  ,  7.267,  3.432,  4.199,  4.966,  5.733,  1.131,  1.898,
        2.665,  8.034,  7.267,  6.5  ,  1.131,  2.665,  3.432,  5.733,
        4.966,  1.131,  2.665,  1.898,  4.199,  3.432,  5.733,  4.966,
        7.267,  6.5  ,  6.5  ,  7.267])

z:
array([  330.799,   340.835,   379.063,  1303.114,   538.557,   662.126,
        1205.669,   506.408,   284.009,   367.73 ,   279.106,   501.668,
         265.382,   753.944,  1303.114,   425.441,   456.172,   523.323,
         420.912,   444.822,   317.4  ,   539.05 ,   304.462,   505.717,
         429.093,   470.069,   677.916,   561.185,   257.518,   361.085,
        1042.523,   328.222,   677.291,   554.068,   361.085,   419.371,
         478.143,   510.053,   263.701,   340.502,   445.629,   433.228,
         546.332,   372.264,   628.328,   448.621,   438.824,   538.858,
         444.822,   425.441,   317.4  ,   645.457,   871.476,   560.89 ,
         505.717,   561.185,   359.103,   427.205,   645.609,   470.069,
         429.093,   547.388,   273.086,   340.835,   379.063,   538.557,
         473.329,   315.204,   549.825,   349.944,   466.532,   677.916,
         330.799,   560.89 ,   662.126,   284.009,   506.408,   367.73 ,
         410.995,   487.467,   249.311,   519.988,   455.012,   871.476,
         419.371,   257.518,   445.629,   340.502,   438.824,   628.328,
         684.842,   396.418,   448.621,   538.858,   562.608,   580.925,
         330.082,  1205.669,   554.068,   677.291,   586.144,   468.201,
         379.195,   328.222,  1042.523,   137.109,   296.036,   560.577,
         464.407,   428.956,   501.668,   279.106,   753.944,   265.382,
         478.143,   645.457])

我使用这些命令:

plt.tripcolor(x, y, z)

plt.plot(x,y, 'ko')

我得到的情节是this

Tripcolor with long triangles

该图是来自圆柱面(360度x轴)的数据,因此如果还有一种方法可以使绘图环绕并消除边缘处的长三角形,那么这也是很好的

1 个答案:

答案 0 :(得分:1)

想出如何用原始轴做到这一点。我将x轴数据除以35,以使x轴和y轴的刻度彼此接近。然后我用缩放的轴数据创建一个三角形对象,以获得三角测量的正确邻居,最后在使用原始x轴数据绘图时使用该三角形对象。

使用上述数据:

x2 = x/35.
triangle = matplotlib.tri.Triangulation(x2,y)
plt.tripcolor(x, y, triangle.triangles, z)

Looks like this now