当前位置: 首页 > 面试题库 >

Matplotlib 3D plot-输入数据的2D格式?

翟理
2023-03-14
问题内容

我正在用matplotlib绘制两个参数的函数。我复制了一个
matplotlib教程中的示例,并使用我自己的输入数据进行转换:向量
X和Y(在-3:3中等分数字)和Z=峰值(X,Y)和峰值a
我定义的函数befohand。怎么了?

def peaks(x,y):
   xsq=x**2
   ysq=y**2
   xsq_one=(x+1)**2
   ysq_one=(y+1)**2
   m1=3*(1-x)**2
   m2=10*(x/5-x**3-y**5)
   m3=1/3
   return m1*numpy.exp(-xsq-ysq_one)-m2*numpy.exp(-xsq-ysq)-m3*numpy.exp(-xsq_one-ysq)


from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.gca(projection='3d')
X=Y=numpy.arange(-3,3,0.01).tolist()
Z=[]
for i in range(len(X)):
Z.append(peaks(X[i],Y[i]))

ax.plot_surface(X, Y, Z, rstride=8, cstride=8, alpha=0.3)
cset = ax.contour(X, Y, Z, zdir='z', offset=-100)
cset = ax.contour(X, Y, Z, zdir='x', offset=-40)
cset = ax.contour(X, Y, Z, zdir='y', offset=40)

ax.set_xlabel('X')
ax.set_xlim(-40, 40)
ax.set_ylabel('Y')
ax.set_ylim(-40, 40)
ax.set_zlabel('Z')
ax.set_zlim(-100, 100)

plt.show()

Thanks for advice!


问题答案:

你需要生成网格。十、 必须是2D数组和Z数组

import numpy
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d

def peaks(x,y):
    return x * numpy.sin(y)

fig = plt.figure()
ax = fig.gca(projection='3d')
X = Y= numpy.arange(-3, 3, 0.1).tolist()
X, Y = numpy.meshgrid(X, Y)

Z = []
for i in range(len(X)):
    Z.append(peaks(X[i],Y[i]))

# Z must be an array
Z = numpy.array(Z)

ax.plot_surface(X, Y, Z, rstride=8, cstride=8, alpha=0.3)
cset = ax.contour(X, Y, Z, zdir='z', offset=-8)
cset = ax.contour(X, Y, Z, zdir='x', offset=-8)
cset = ax.contour(X, Y, Z, zdir='y', offset=8)

ax.set_xlabel('X')
ax.set_xlim(-8, 8)
ax.set_ylabel('Y')
ax.set_ylim(-8, 8)
ax.set_zlabel('Z')
ax.set_zlim(-8, 8)

plt.show()


 类似资料:
  • 我有一个数据表与形式输入。 这就是我创造它的方式 我使用以下方法将数据表值传递给控制器 但是当我使用ajax函数提交数据时,我会在expdate列的输入值上得到html标记。我怎样才能得到真正的价值?解释我

  • 所以我们刚刚进行了一个小的实践考试,要求我们阅读以下格式的输入,作为非图形问题的规则。实际的算法一点也不难做到,但我和我的伙伴们都不知道如何从一开始就扫描这些输入。 前两个整数表示行数(4)和列数。(4) 因此,接下来的四行表示每行的规则(1 2 3表示第2行),接下来的四行表示每列的规则(2 2表示第4列),依此类推。 在学习C语言一个学期后,我们只处理了每行具有相同列数的数组,在这个Java模

  • 2.6.1 数据的输入 有的程序处理的是静态数据,即在程序运行之前数据已准备好。这时我们可以预先将数据存储在变量之中,并且能够针对数据的特性来选用合适的处理命令。例如,已知 Lucy 在 2012 年是 7 岁,则可编写下面的程序来显示 Lucy 的出生年份信息: 【程序 2.1】eg2_1.py name = "Lucy" age = 7 birthYear = 2012 - age pri

  • 我对JAVA非常陌生,我需要帮助获得某种嵌套循环,我认为这是一个用户输入,并将输入放入数组中。还有一个哨兵-1。我知道为别人做作业是不受欢迎的,而这根本不是我所要求的。我希望有人能帮我解释一下,而不是帮我写代码。我刚开始需要帮助。我搞不懂这个节目的第一部分: 我必须使用[4][5]的2D数组,其中4是销售人员的数量,5是他们销售的产品的数量。我必须向用户询问人名(1-4),然后再询问已售出的产品(

  • 2.6 数据的输入和输出 任何程序都需要与用户进行沟通,这就要求程序具有输入输出的功能。输入是指程序从 用户那儿获取数据,输出是指程序向用户显示或打印数据。 程序中负责与用户沟通的部分称为用户界面,它是程序设计的一个重要组成部分。设计 用户界面时要遵循的一个主要原则是所谓“用户友好性”,即要让用户在与计算机程序交互 时感到非常简单、方便和不易犯错。本章只讨论简单的数据输入输出,本书后文将专门讨论

  • 我已经完成了连接Clickhouse服务器/客户端和创建表的任务。然后,我想将数据从csv导入到该表中。问题是ClickHouse中的DateTime类型需要这样的格式:YYYY-MM-DD hh:mm:ss,但是我下载的数据集只有这个时间格式:2016-01-13 6:15:00am(YYYY-MM-DD h:MM:ss)小时在我的数据集中只有h,应该是hh。请告诉我如何将csv文件中的所有数据