我想使用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()

最佳答案

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()

关于python - 如何使用python sympy图隐式在同一图中绘制不同的隐式方程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52142507/

10-12 18:18