Как построить другое неявное уравнение в одном и том же графе с использованием неявного сюжета Python - PullRequest
0 голосов
/ 03 сентября 2018

Я хочу построить разные уравнения на одном графике, используя python sympy plot_implicit.

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

Более того, я хочу построить координатные точки (заданные как «точки» в примере кода) на том же графике.

Может кто-нибудь решить эту цитату?

import math
import numpy as np
import matplotlib.pyplot as plt
from sympy import *
from sympy.plotting import plot
from sympy.plotting import plot_implicit

points = np.array([[10,20], [20, 75], [45, 15], [70, 53], [90, 30]])
weights = np.array([5, 5.1, 5.2, 4.9, 4.8])

x, y = symbols("x y")

 for i in range(len(points)):
  G = (x-points[i][0])**2 + (y-points[i][1])**2 - weights[i]**2   
  p2 = plot_implicit(G, (x,-50,100), (y,-50,100), show=False, line_color='r')
  p2.extend(p2)

p2.show()

1 Ответ

0 голосов
/ 04 сентября 2018

p2.extend(p2) неправильно, вы никогда не хотите расширять сюжет самостоятельно. Кроме того, все, что вы сделали с p2 в одном цикле цикла, будет уничтожено следующим циклом, поскольку вы присваиваете p2 внутри цикла.

Вам нужна отдельная переменная, скажем, p, в качестве аккумулятора графиков. Давайте инициализируем его значением None перед циклом, а затем либо назначим ему p2 (при первом запуске), либо расширим его на p2 (при последующих запусках). Условие if p работает для этой цели: None ложно, но объекты, включая объекты Plot, являются правдивыми.

p = None
for i in range(len(points)):
  G = (x-points[i][0])**2 + (y-points[i][1])**2 - weights[i]**2   
  p2 = plot_implicit(G, (x,-50,100), (y,-50,100), show=False, line_color='r')
  if p:
    p.extend(p2)
  else:
    p = p2

p.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...