Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 98d1d24

Browse files
committed
Merge pull request matplotlib#4184 from ianthomas23/4180_trirefiner_fortran_contiguous_triangles
Fix for issue matplotlib#4180 trirefiner not dealing with fortran contiguous triangles
2 parents 71047e9 + fcbea4a commit 98d1d24

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

lib/matplotlib/tests/test_triangulation.py

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import numpy as np
77
import matplotlib.pyplot as plt
88
import matplotlib.tri as mtri
9-
from nose.tools import assert_equal, assert_raises
9+
from nose.tools import assert_equal, assert_raises, assert_true, assert_false
1010
from numpy.testing import assert_array_equal, assert_array_almost_equal,\
1111
assert_array_less
1212
import numpy.ma.testutils as matest
@@ -962,6 +962,29 @@ def test_triplot_return():
962962
raise AssertionError("triplot should return the artist it adds")
963963

964964

965+
def test_trirefiner_fortran_contiguous_triangles():
966+
# github issue 4180. Test requires two arrays of triangles that are
967+
# identical except that one is C-contiguous and one is fortran-contiguous.
968+
triangles1 = np.array([[2, 0, 3], [2, 1, 0]])
969+
assert_false(np.isfortran(triangles1))
970+
971+
triangles2 = np.copy(triangles1, order='F')
972+
assert_true(np.isfortran(triangles2))
973+
974+
x = np.array([0.39, 0.59, 0.43, 0.32])
975+
y = np.array([33.99, 34.01, 34.19, 34.18])
976+
triang1 = mtri.Triangulation(x, y, triangles1)
977+
triang2 = mtri.Triangulation(x, y, triangles2)
978+
979+
refiner1 = mtri.UniformTriRefiner(triang1)
980+
refiner2 = mtri.UniformTriRefiner(triang2)
981+
982+
fine_triang1 = refiner1.refine_triangulation(subdiv=1)
983+
fine_triang2 = refiner2.refine_triangulation(subdiv=1)
984+
985+
assert_array_equal(fine_triang1.triangles, fine_triang2.triangles)
986+
987+
965988
if __name__ == '__main__':
966989
import nose
967990
nose.runmodule(argv=['-s', '--with-doctest'], exit=False)

lib/matplotlib/tri/triangulation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def __init__(self, x, y, triangles=None, mask=None):
5757
else:
5858
# Triangulation specified. Copy, since we may correct triangle
5959
# orientation.
60-
self.triangles = np.array(triangles, dtype=np.int32)
60+
self.triangles = np.array(triangles, dtype=np.int32, order='C')
6161
if self.triangles.ndim != 2 or self.triangles.shape[1] != 3:
6262
raise ValueError('triangles must be a (?,3) array')
6363
if self.triangles.max() >= len(self.x):

0 commit comments

Comments
 (0)