Как я могу конвертировать из размера разброса в координаты данных в matplotlib?

Я хотел бы программно проверить, будут ли два символа графика рассеяния перекрываться в matplotlib. Поэтому, учитывая пару координат (x, y) и размер (который, как я понимаю, является областью круга, в точках), я хотел бы построить

plt.scatter(x, y, s=s) 

и затем имеет функцию, называемую points_overlap которая принимает эти параметры и возвращает True если точки будут перекрываться, а False противном случае.

 def points_overlap(x, y, s): if ... return True else: return False 

Я знаю, что есть матрицы преобразования, чтобы взять меня между различными системами координат matplotlib , но я не могу понять правильные шаги для написания этой функции.

One Solution collect form web for “Как я могу конвертировать из размера разброса в координаты данных в matplotlib?”

Это требует некоторого тестирования, но это может сработать? Все они должны быть в пространстве дисплея

 def overlap(x, y, sx, sy): return np.linalg.norm(x - y) < np.linalg.norm(sx + sy) 

контрольная работа:

 In [227]: X = np.array([[1, 1], [2, 1], [2.5, 1]]) In [228]: s = np.array([20, 10000, 10000]) In [229]: fig, ax = plt.subplots() In [230]: ax.scatter(X[:, 0], X[:, 1], s=s) Out[230]: <matplotlib.collections.PathCollection at 0x10c32f28> In [231]: plt.draw() 

Испытайте каждую пару:

 Xt = ax.transData.transform(X) st = np.sqrt(s) pairs = product(Xt, Xt) sizes = product(st, st) for i, ((x, y), (sx, sy)) in enumerate(zip(pairs, sizes)): h = i % 3 j = i // 3 if h != j and overlap(x, y, sx, sy): print((i, h, j)) 

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

Там есть много возможностей для улучшения. Вероятно, проще преобразовать все ваши данные и передать их в функцию points_overlap вместо того, чтобы делать преобразование внутри. На самом деле это было бы намного лучше.

  • Как обновить анимацию 3D-стрелок в matplotlib
  • Python, Matplotlib, subplot: Как установить диапазон осей?
  • Как установить длину штриха в контур контура matplotlib
  • Matplotlib Legend Высота в пикселях
  • Как маркировать и изменять масштаб осей Seaborn kdeplot
  • Разбитые участки в Pandas / Pyplot: как построить по категориям
  • Создание фильма из python без сохранения отдельных кадров в файлы
  • Matplotlib соединяет точки рассеивания с линией - Python
  • Сохраняйте фигуру «на удержании» после запуска скрипта
  • Почему set_xticks не устанавливает метки тиков?
  • изменить силу сглаживания в matplotlib
  •  
    Interesting Posts for Van-Lav

    Клавиатура Tkinter Binds

    Как Geckodriver / Firefox работает без Marionette? (запуск pelon selenium 3 против FF 53)

    Строка даты на языке Python

    как заставить SQLlite выбрать для поведения транзакции обновления в sqlalchemy

    Django copy / paste Queryset

    Вороной – Вычислить точные границы каждого региона

    Как сделать pip или easy_install tkinter

    Презентации слайдов HTML с подсветкой синтаксиса Python

    Почему это двоичное сравнение неверно в Python?

    Python pandas dataframe read from_records, «AssertionError: прошло 1 столбец, прошло 22 столбца»,

    Почему этот итеративный метод Collatz на 30% медленнее, чем его рекурсивная версия в Python?

    интерполировать массив python, чтобы минимизировать максимальную разницу между элементами

    Доступ к переменной Javascript в шаблоне Django

    Разница между языками системного программирования и языками программирования приложений

    Как читать целые числа из файла, который является 24-битным и маленьким, с использованием Python?

    Python - лучший язык программирования в мире.