Использование scipy.spatial.Delaunay вместо встроенной версии matplotlib.tri.Triangulation

Кажется, что matplotlib.tri.Triangulation использует matplotlib.tri.Triangulation и, возможно, неправильную реализацию триангуляции Delaunay, которая должна быть заменена на qHull .

Я пытаюсь построить trisurf, используя mpl_toolkits.mplot3d.plot_trisurf() и запуская кучу исключений, которые бесполезны ( IndexError s и KeyError основном, без указания того, что точно пошло не так).

Поскольку scipy.spatial.Delaunay уже использует qHull, мне было интересно, есть ли способ создать объект matplotlib.tri.Triangulation для использования с mpl_toolkits.mplot3d.plot_trisurf() используя реализацию Scipy триангуляции Delaunay.

Я пробовал передать delaunay.points непосредственно в matplotlib.tri.Triangulate через параметр triangles , но это приводит к тому, что элемент ValueError: triangles min element is out of bounds .

One Solution collect form web for “Использование scipy.spatial.Delaunay вместо встроенной версии matplotlib.tri.Triangulation”

http://docs.scipy.org/doc/scipy-0.13.0/reference/generated/scipy.spatial.Delaunay.html http://matplotlib.org/dev/api/tri_api.html

Поэтому вам нужно передать обе точки и треугольники из qhull в конструктор Triangulation :

 import numpy as np import scipy.spatial import matplotlib import math import matplotlib.tri as mtri import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # First create the x and y coordinates of the points. n_angles = 20 n_radii = 10 min_radius = 0.15 radii = np.linspace(min_radius, 0.95, n_radii) angles = np.linspace(0, 2*math.pi, n_angles, endpoint=False) angles = np.repeat(angles[..., np.newaxis], n_radii, axis=1) angles[:, 1::2] += math.pi/n_angles x = (radii*np.cos(angles)).flatten() y = (radii*np.sin(angles)).flatten() # Create the Delaunay tessalation using scipy.spatial pts = np.vstack([x, y]).T tess = scipy.spatial.Delaunay(pts) # Create the matplotlib Triangulation object x = tess.points[:, 0] y = tess.points[:, 1] tri = tess.vertices # or tess.simplices depending on scipy version triang = mtri.Triangulation(x=pts[:, 0], y=pts[:, 1], triangles=tri) # Plotting z = x*x + y*y fig = plt.figure() ax = fig.gca(projection='3d') ax.plot_trisurf(triang, z) plt.show() 

выход (с ведущим током matplotlib): введите описание изображения здесь

  • Чтение файла и построение CDF в Python
  • scipy.sparse dot чрезвычайно медленный в Python
  • Расположение элементов в массиве numpy
  • самый быстрый способ выбрать 7 * 7 соседних пикселей для каждого пикселя в изображении в Python
  • Должен ли я использовать scipy.pi, numpy.pi или math.pi?
  • корректировка осей с помощью imshow
  • используя SciPy для интеграции функции, возвращающей матрицу или массив
  • создание wav-файла и запись его на диск с использованием scipy
  • Как заставить большие шаги выполнять функции scipy.optimize?
  • Общие библиотеки Python: RTLD_GLOBAL segfault
  • Создание коррелированных данных в Python (3.3)
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.