Задача построения выпуклой оболочки случайных точек

#python-3.x #jupyter-notebook #convex-hull

#python-3.x #jupyter-ноутбук #выпуклая оболочка

Вопрос:

Что-то, что ускользает от меня…

Когда я запускаю первую приведенную ниже программу в записной книжке Jupyter:

 import numpy as np
from numpy import random
from scipy.spatial import ConvexHull
import matplotlib.pyplot as plt

points = np.random.rand(30, 2)

hull = ConvexHull(points)

plt.plot(points[:,0], points[:,1], 'o')

for simplex in hull.simplices:
    plt.plot(points[simplex,0], points[simplex,1], 'k-')
  

Я получаю, как и ожидалось, график точек и выпуклой оболочки:

введите описание изображения здесь

И когда после этого я запускаю вторую программу ниже:

 import numpy as np
from numpy import random
from scipy.spatial import ConvexHull, convex_hull_plot_2d

points = np.random.rand(30, 2)

hull = ConvexHull(points)

convex_hull_plot_2d(hull)
  

Я получаю двойной график!

введите описание изображения здесь

Чего мне не хватает?

Комментарии:

1. Можете ли вы уточнить? Есть ли две оси на одном рисунке? Отображается ли один и тот же график на двух рисунках? Запуск ваших программ по отдельности создает только один график. Вы запустили первый, затем второй? Потому что, если вы это сделали, тогда, конечно , это создаст два графика — один из первого кода, один из второго.

2. Да, я запустил первый, затем второй. Это происходит от этого? Но как это возможно? Я воссоздаю новые точки и новую оболочку…

3. Я не знал, что вы запустили весь второй код. Вы уверены, что это весь второй код? Я запустил его, и я получаю один график i.stack.imgur.com/jbWlb.png

4. Это действительно происходит. Я открыл записную книжку Jupyter и записал эти 2 фрагмента кода в 2 разных ячейках. Запуск первой ячейки дает один график (с некоторыми случайными точками). Послесловие, запуск второй ячейки дает мне 2 одинаковых графика (с, конечно, некоторыми другими случайными точками).

5. Всегда добавляйте plt.show() , когда будете готовы к построению графика.