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