python - 绘制非多项式多元隐式方程
问题描述
我目前正在尝试用 matplotlib 绘制以下方程:
-4xy + x² - y² + 4(x³y - xy³) = 0
我不想解决这个可怕的方程,以便通过简单地分配x = np.linspace(-5,5)
然后将其放入我的方程来绘制它。
我想知道是否可以直接绘制解决方案matplotlib.pyplot
?我能够使用 Geogebra 快速快速地绘制函数,所以我想这也应该可以使用 python。但是,我还没有发现任何其他问题。有没有人有任何想法?
解决方案
一种方法是使用 Sympy 的plot_implicit
函数。
代码:
from sympy import plot_implicit, symbols, Eq
x, y = symbols('x y')
plot_implicit(Eq(-4*x*y+x**2-y**2+4*(x**3-x*y**3), 0),
adaptive=False,
points=1000)
输出:
在引擎盖下,这使用网格来决定是否在图上的每个点上绘制函数。这也是 Geogebra 将在幕后做的事情。要在 vanilla matplotlib 中应用这种方法,我们可以使用等高线图:
代码:
import numpy as np
import matplotlib.pyplot as plt
# Plot axes in middle
fig, ax = plt.subplots()
ax.spines['left'].set_position('center')
ax.spines['bottom'].set_position('center')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
# Set up mesh grid
x = y = np.linspace(-1.0, 1.0, 100)
X, Y = np.meshgrid(x,y)
# Plot contour
ax.contour(X, Y, -4*X*Y+X**2-Y**2+4*(X**3-x*Y**3), [0])
plt.show()
输出:
推荐阅读
- mysql - 如何在 Sequelize 和 Mysql 中编写此查询
- android - 每次向服务器(android)发送报告时如何获取当前日期?
- javascript - Firebase auth.currentUser 在加载页面时为空,在页面加载几毫秒后调用 authstatechange 时加载用户
- php - 使用 PHP 和 SQL 在复选框上提交多个值
- symfony - Symfony onKernelRequest headers->set don't received on @Route
- javascript - Javascript:将对象数据推送到数组中的特定索引中,并将零推送到索引的其余部分
- vuejs2 - Vue.js 插槽: tags used as slot content - How can I test this?
I have 2 main views which are using a shared layout component which has several named slots. I am passing the slot content through using wrapping
<template>
- java - Volley 使用 post 方法时向服务器发送空参数
- dc.js - dc.js - 将过滤器值显示为画笔上的标签
- c# - Using System.Runtime.Caching.MemoryCache in ASP.NET consumes so memory