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

Matplotlib绘制三维脉冲传播

祁雪峰
2023-03-14
问题内容

我想以这样的方式绘制每一步的脉冲传播,它绘制
脉冲形状。换句话说,我想要一系列的x-z图,对于
y、 像这样的东西(没有颜色):![脉搏
传播
如何使用matplotlib(或Mayavi)实现这一点?以下是我迄今为止所做的:

def drawPropagation(beta2, C, z):
    """ beta2 in ps / km
        C is chirp
        z is an array of z positions """
    T = numpy.linspace(-10, 10, 100)
    sx = T.size
    sy = z.size

    T = numpy.tile(T, (sy, 1))
    z = numpy.tile(z, (sx, 1)).T

    U = 1 / numpy.sqrt(1 - 1j*beta2*z * (1 + 1j * C)) * numpy.exp(- 0.5 * (1 + 1j * C) * T * T / (1 - 1j*beta2*z*(1 + 1j*C)))

    fig = pyplot.figure()
    ax = fig.add_subplot(1,1,1, projection='3d')
    surf = ax.plot_wireframe(T, z, abs(U))

问题答案:

Change to:

ax.plot_wireframe(T, z, abs(U), cstride=1000)

and call:

drawPropagation(1.0, 1.0, numpy.linspace(-2, 2, 10))

If you need the curve been filled with white color:

import numpy
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import pyplot
from matplotlib.collections import PolyCollection

def drawPropagation(beta2, C, z):
    """ beta2 in ps / km
        C is chirp
        z is an array of z positions """
    T = numpy.linspace(-10, 10, 100)
    sx = T.size
    sy = z.size

    T = numpy.tile(T, (sy, 1))
    z = numpy.tile(z, (sx, 1)).T

    U = 1 / numpy.sqrt(1 - 1j*beta2*z * (1 + 1j * C)) * numpy.exp(- 0.5 * (1 + 1j * C) * T * T / (1 - 1j*beta2*z*(1 + 1j*C)))

    fig = pyplot.figure()
    ax = fig.add_subplot(1,1,1, projection='3d')
    U = numpy.abs(U)

    verts = []
    for i in xrange(T.shape[0]):
        verts.append(zip(T[i, :], U[i, :]))

    poly = PolyCollection(verts, facecolors=(1,1,1,1), edgecolors=(0,0,1,1))
    ax.add_collection3d(poly, zs=z[:, 0], zdir='y')
    ax.set_xlim3d(numpy.min(T), numpy.max(T))
    ax.set_ylim3d(numpy.min(z), numpy.max(z))
    ax.set_zlim3d(numpy.min(U), numpy.max(U))

drawPropagation(1.0, 1.0, numpy.linspace(-2, 2, 10))
pyplot.show()


 类似资料:
  • 本文向大家介绍python matplotlib绘制三维图的示例,包括了python matplotlib绘制三维图的示例的使用技巧和注意事项,需要的朋友参考一下 作者:catmelo 本文版权归作者所有 链接:https://www.cnblogs.com/catmelo/p/4162101.html 本文参考官方文档:http://matplotlib.org/mpl_toolkits/mpl

  • 本文向大家介绍matplotlib 三维图表绘制方法简介,包括了matplotlib 三维图表绘制方法简介的使用技巧和注意事项,需要的朋友参考一下 1. python三维图表绘制方法简介 python三维图表的绘制算是二维图表的一个进阶版本,本质上和二维图表的绘制并无差别,唯一的区别在于使用的库略有差异。 相较于二维图表使用的pyplot库,三维图表的绘制使用的是Axes3D库。 库引入语句为:

  • 我有一个三维阵列。列的标题是“身高”、“体重”和“年龄”。如何使用或任何其他可用功能绘制三维直方图? 我从这段代码开始,但后来我陷入了如何绘制三维直方图的困境。谢谢你宝贵的时间

  • 本文向大家介绍Python使用matplotlib绘制三维参数曲线操作示例,包括了Python使用matplotlib绘制三维参数曲线操作示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python使用matplotlib绘制三维参数曲线操作。分享给大家供大家参考,具体如下: 一 代码 二 运行结果 更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数学运算技巧总结

  • 本文向大家介绍Python三维绘图之Matplotlib库的使用方法,包括了Python三维绘图之Matplotlib库的使用方法的使用技巧和注意事项,需要的朋友参考一下 前言 在遇到三维数据时,三维图像能给我们对数据带来更加深入地理解。python的matplotlib库就包含了丰富的三维绘图工具。 1.创建三维坐标轴对象Axes3D 创建Axes3D主要有两种方式,一种是利用关键字projec

  • 本文向大家介绍matplotlib 创建三维轴,包括了matplotlib 创建三维轴的使用技巧和注意事项,需要的朋友参考一下 示例 Matplotlib轴默认为二维轴。为了创建三维图,我们需要Axes3D从mplot3d工具包中导入类,这将为轴启用一种新的投影,即'3d': 除了对二维图(例如线图,散点图,条形图,等高线图)的简单概括外,还提供了几种曲面图绘制方法,例如ax.plot_surfa