gpt4 book ai didi

python - 如何绘制面向局部 x 轴 matplotlib 3d 的函数?

转载 作者:太空宇宙 更新时间:2023-11-03 21:48:07 27 4
gpt4 key购买 nike

我需要在 3D matplotlib 上绘制 f(z) 函数,但在局部 x 轴上,由两个点定义并填充它们之间,以保持如图所示:

here

我有这两个点定义了局部轴x,它们之间有20个值以及f(z)相应的20个值,但我不知道如何绘制。有人可以帮助我吗?

valuesx = np.arange(0.0, 5, 5/20) # local axis values ​​x
self.listax.append(valuesx)
for l in valuesx:
fy= 2*x**2-4 #equation
fyx = eval(fy, {'x': l})
self.listay.append(fyx)
x = [self.listax]
y = [self.listay]
z = [1, 5]
verts = [list(zip(x, y, z))]
self.axes.add_collection3d(Poly3DCollection(verts, facecolor = 'red', alpha=0.6), zs='z')
self.fig.canvas.draw()

最佳答案

抱歉,这是一个有点快速和肮脏的答案,但以下示例应该对您有所帮助:

https://matplotlib.org/gallery/mplot3d/polys3d.html

根据您的示例调整上述内容:

from mpl_toolkits.mplot3d import Axes3D
from matplotlib.collections import PolyCollection
import matplotlib.pyplot as plt
from matplotlib import colors as mcolors
import numpy as np
%matplotlib inline

def f(x):
return (2*x**2-4)

valuesx = np.arange(0.0, 5, 5/20)
valuesy= np.array([f(i) for i in valuesx])

def polygon_under_graph(xlist, ylist):
'''
Construct the vertex list which defines the polygon filling the space under
the (xlist, ylist) line graph. Assumes the xs are in ascending order.
'''
return [(xlist[0], 0.)] + list(zip(xlist, ylist)) + [(xlist[-1], 0.)]

zs = 0

fig = plt.figure()
ax = fig.gca(projection='3d')
verts=[]
verts.append(polygon_under_graph(valuesx, valuesy))

poly = PolyCollection(verts, facecolors='r')
ax.add_collection3d(poly, zs=zs, zdir='x')

ax.set_xlim(0, 5)
ax.set_ylim(0, 4)
ax.set_zlim(np.min(ys), np.max(ys))

应该给你:

enter image description here

然后,您可以根据需要调整限制,并调整 zs 变量以沿 x 轴上的值进行绘制。

关于python - 如何绘制面向局部 x 轴 matplotlib 3d 的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52322665/

27 4 0
文章推荐: html - CSS 图像周围的阴影/亮度
文章推荐: c# - 使用 facebook c# sdk V.6.x 我怎样才能获得用户是管理员的所有页面的列表?
文章推荐: javascript - jQuery onClick 隐藏
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com