鱼C论坛

 找回密码
 立即注册
查看: 2974|回复: 3

求助大佬,我应该怎么画这样的图

[复制链接]
发表于 2020-2-16 15:36:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 snowJR 于 2020-2-16 15:54 编辑

import sympy as sp
x=sp.symbols('x')
y=sp.symbols('y')
x1=sp.sin(x)
y1=sp.cos(y)
sp.plot(x1*y1)


我应该怎么画y1*x1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-17 17:59:55 | 显示全部楼层
sympy的plot只能画同一个变量的图,不能两个变量。
你这已经是个三维的图了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-17 21:43:46 | 显示全部楼层
prophet-1 发表于 2020-2-17 17:59
sympy的plot只能画同一个变量的图,不能两个变量。
你这已经是个三维的图了。

那我应该用哪个库?用matplotlib吗?那我的算法是不是该换成numpy了?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-18 15:17:36 | 显示全部楼层
snowJR 发表于 2020-2-17 21:43
那我应该用哪个库?用matplotlib吗?那我的算法是不是该换成numpy了?
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. from mpl_toolkits.mplot3d import Axes3D

  4. x = np.linspace(-np.pi,np.pi,100)
  5. y = np.linspace(-np.pi,np.pi,100)
  6. X,Y = np.meshgrid(x,y)
  7. Z = np.sin(X)*np.cos(Y)

  8. fig = plt.figure()
  9. ax = Axes3D(fig)

  10. ax.plot_surface(X,Y,Z)
  11. plt.show()
复制代码


你可以这么写。
x,y的范围都是[-pi,pi]。

meshgrid是将x,y映射到三维。例如
x = [1,2,3]       =>     X = [[1,2,3],[1,2,3],[1,2,3]]
y = [4,5,6]       =>     Y = [[4,4,4],[5,5,5],[6,6,6]]

plot_surface是3D画图,形成一个面。(具体原理,可以自己去找一下)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-22 11:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表