精华内容
下载资源
问答
  • 3D中的散点图是mpl_toolkits.mplot3d.art3d.Path3...因此,不在动画的每次迭代中创建整个绘图可能是有益的,而是仅更新其点.以下是如何执行此操作的工作示例.import numpy as npfrom matplotlib import pyplot as ...

    3D中的散点图是mpl_toolkits.mplot3d.art3d.Path3DCollection对象.这提供了一个属性_offsets3d,它承载一个元组(x,y,z),可用于更新散点的坐标.因此,不在动画的每次迭代中创建整个绘图可能是有益的,而是仅更新其点.

    以下是如何执行此操作的工作示例.

    import numpy as np

    from matplotlib import pyplot as plt

    from mpl_toolkits.mplot3d import Axes3D

    import matplotlib.animation

    import pandas as pd

    a = np.random.rand(2000, 3)*10

    t = np.array([np.ones(100)*i for i in range(20)]).flatten()

    df = pd.DataFrame({"time": t ,"x" : a[:,0], "y" : a[:,1], "z" : a[:,2]})

    def update_graph(num):

    data=df[df['time']==num]

    graph._offsets3d = (data.x, data.y, data.z)

    title.set_text('3D Test, time={}'.format(num))

    fig = plt.figure()

    ax = fig.add_subplot(111, projection='3d')

    title = ax.set_title('3D Test')

    data=df[df['time']==0]

    graph = ax.scatter(data.x, data.y, data.z)

    ani = matplotlib.animation.FuncAnimation(fig, update_graph, 19,

    interval=40, blit=False)

    plt.show()

    该解决方案不允许blitting.但是,根据使用情况,可能根本不需要使用散点图;使用正常情节可能同样可能,这允许blitting – 如下例所示.

    import numpy as np

    from matplotlib import pyplot as plt

    from mpl_toolkits.mplot3d import Axes3D

    import matplotlib.animation

    import pandas as pd

    a = np.random.rand(2000, 3)*10

    t = np.array([np.ones(100)*i for i in range(20)]).flatten()

    df = pd.DataFrame({"time": t ,"x" : a[:,0], "y" : a[:,1], "z" : a[:,2]})

    def update_graph(num):

    data=df[df['time']==num]

    graph.set_data (data.x, data.y)

    graph.set_3d_properties(data.z)

    title.set_text('3D Test, time={}'.format(num))

    return title, graph,

    fig = plt.figure()

    ax = fig.add_subplot(111, projection='3d')

    title = ax.set_title('3D Test')

    data=df[df['time']==0]

    graph, = ax.plot(data.x, data.y, data.z, linestyle="", marker="o")

    ani = matplotlib.animation.FuncAnimation(fig, update_graph, 19,

    interval=40, blit=True)

    plt.show()

    展开全文
  • 您可以单独保存每个图像,然后调用imageMagick将它们转换为动画gif,而不是调用动画.请参阅下面的代码并注意convert.exe的参数.from __future__ import divisionfrom numpy import pi, sin, cos, mgridfrom scipy.s...

    我认为这真的是一个错误.

    但是,如果您更关心结果而不是达到目标的方式,那么下面的工作就可以完成.您可以单独保存每个图像,然后调用imageMagick将它们转换为动画gif,而不是调用动画.

    请参阅下面的代码并注意convert.exe的参数.

    from __future__ import division

    from numpy import pi, sin, cos, mgrid

    from scipy.special import jn, jn_zeros

    from mpl_toolkits.mplot3d import Axes3D

    import matplotlib.pyplot as plt

    from matplotlib import rcParams

    import subprocess

    # In Windows the next line should provide the full path to convert.exe

    # since convert is a Windows command

    path_to_convert = "C:\Program Files\ImageMagick-6.9.3\convert.exe"

    #rcParams['animation.convert_path'] = path_to_convert

    rcParams['savefig.transparent'] = True

    rcParams['savefig.dpi'] = 130

    rcParams['savefig.pad_inches'] = 0

    plot_args = {'rstride': 1, 'cstride': 1, 'cmap':"RdYlBu",

    'linewidth': 0.5, 'antialiased': True, 'color': '#1e1e1e',

    'shade': True, 'alpha': 1.0, 'vmin': -1, 'vmax':1}

    def data_gen(num):

    ax.cla()

    ax.clear()

    m, n = 1, 2

    lam = jn_zeros(m, n)[-1]

    dt = 2*pi/(30*lam)

    z = cos(m*t)*jn(m, lam*r)*sin(lam*num*dt)

    surf = ax.plot_surface(x, y, z, **plot_args)

    ax.view_init(elev=30, azim=45)

    ax.set_xlim(-0.6, 0.6)

    ax.set_ylim(-0.6, 0.6)

    ax.set_zlim(-1, 1)

    ax.axis("off")

    fig.patch.set_visible(False)

    ax.patch.set_visible(False)

    ax.set_axis_off()

    ax._axis3don = False

    return surf

    r, t = mgrid[0:1:20j, 0:2*pi:40j]

    x, y = r*cos(t), r*sin(t)

    fig = plt.figure(facecolor=None, frameon=False)

    ax = fig.add_subplot(111, projection='3d')

    for i in range(30):

    data_gen(i)

    plt.savefig("drum_{n:02d}.png".format(n=i), transparent=True, frameon=False)

    print i,

    args = [path_to_convert, "-delay", "10", "-loop" , "0", "-dispose", "Background", "drum_*.png", "output.gif"]

    subprocess.call(args, shell=True)

    subprocess.call(["del", "/Q", "drum_*.png"], shell=True)

    print "\ndone"

    请注意,对imageMagick和delete命令的调用可能是系统依赖的.此脚本已在Windows 8下使用imageMagick 7.0.3(Q16)进行了测试.

    展开全文
  • import numpy as npimport matplotlib.pyplot as pltimport mpl_toolkits.mplot3d.axes3d as p3import matplotlib.animation as animationdef make_helix(n):theta_max = 8 * np.pitheta = np.linspace(0, theta_max...

    import numpy as np

    import matplotlib.pyplot as plt

    import mpl_toolkits.mplot3d.axes3d as p3

    import matplotlib.animation as animation

    def make_helix(n):

    theta_max = 8 * np.pi

    theta = np.linspace(0, theta_max, n)

    x, y, z = theta, np.sin(theta), np.cos(theta)

    helix = np.vstack((x, y, z))

    return helix

    def update_lines(num, dataLines, lines) :

    for line, data in zip(lines, dataLines) :

    line.set_data(data[0:2, num-1:num])

    line.set_3d_properties(data[2,num-1:num])

    return lines

    # Attach 3D axis to the figure

    fig = plt.figure()

    ax = p3.Axes3D(fig)

    n = 100

    data = [make_helix(n)]

    lines = [ax.plot(data[0][0,0:1], data[0][1,0:1], data[0][2,0:1], 'o')[0]]

    # Setthe axes properties

    ax.set_xlim3d([0.0, 8*np.pi])

    ax.set_xlabel('X')

    ax.set_ylim3d([-1.0, 1.0])

    ax.set_ylabel('Y')

    ax.set_zlim3d([-1.0, 1.0])

    ax.set_zlabel('Z')

    ax.set_title('3D Test')

    # Creating the Animation object

    ani = animation.FuncAnimation(fig, update_lines, n, fargs=(data, lines),

    interval=50, blit=False)

    plt.show()

    (用您自己的数据替换helix,并相应地设置轴限制)。在

    展开全文
  • ====1.1 环境:python3.8+matplotlib3.3.21.2 效果图:3D自旋转玫瑰花2 技术要点:=========2.1 3D的matplotlib作图mpl_toolkits.mplot3d import Axes3D和numpy的相关函数的复习。2.2 matplotlib动画设置animmation...

    ====

    1.1 环境:python3.8+matplotlib3.3.2

    1.2 效果图:3D自旋转玫瑰花

    2 技术要点:

    =========

    2.1 3D的matplotlib作图mpl_toolkits.mplot3d import Axes3D和numpy的相关函数的复习。

    2.2 matplotlib动画设置animmation复习。

    2.3 matplotlib.cm颜色表中cm=colormap复习。

    #可以通过调用以下内容找到matplotlib版本中可用的颜色图的完整列表>>> from matplotlib import cm>>> dir(cm)

    3 代码步骤:

    ========

    3.1 第一步:导入模块

    import matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Dfrom matplotlib import cmimport matplotlib.animation as animmationimport numpy as np

    3.2 第二步:设置窗口和图表

    #初始化一个图片,大小默认fig=plt.figure()#窗口标题名fig.canvas.set_window_title('3D-rose')#图片背景颜色fig.patch.set_facecolor('black')#定一个3d的画布ax=fig.gca(projection='3d')#轴背景颜色ax.set_facecolor("black")

    3.3 第三步:3D玫瑰花的初始数据

    #难点,大量使用numpy的相关函数#25代表花瓣想的方向,越大方向向下;24也是,越小代表花瓣方向向下#10代表花瓣数#x轴坐标[x,t]=np.meshgrid(np.array(range(25))/24.0,np.arange(0,900,0.5)/900*10*np.pi-2*np.pi)#角度p=(np.pi/2)*np.exp(-t/(8*np.pi))#z轴坐标z=1-(1-np.mod(3.6*t,2*np.pi)/np.pi)**4/2#y轴坐标y=2*(x**2-x)**2*np.sin(p)#半径r=z*(x*np.sin(p)+y*np.cos(p))

    其中np.sin、np.cos、np.pi、np.exp、np.mod等数学函数。

    numpy.exp():返回e的幂次方,e是一个常数为2.71828。

    numpy.mod(x1, x2):

    相当于Python模运算符``x1%x2``,并且与除数x2具有相同的符号(正负号)。

    ====================================================

    X,Y = numpy.meshgrid(x, y)

    输入的x,y,就是网格点的横纵坐标列向量(非矩阵)

    输出的X,Y,就是坐标矩阵。

    np.meshgrid生成的坐标矩阵可以用np.stack指定axi还原各个点坐标。

    ===================================================

    np.arange()函数返回一个有终点和起点的固定步长的排列,如[1,2,3,4,5],起点是1,终点是5,步长为1。

    3.4 第四步:定义三维坐标

    #定义三维坐标xx、yy、zzxx=r*np.cos(t)yy=r*np.sin(t)zz=z*(x*np.cos(p)-y*np.sin(p))

    3.5 第五步:动画设置,注意return 后面的fig逗号

    #初始化def init(): ax.plot_surface(xx,yy,zz,rstride=1,cstride=1,cmap=cm.gist_rainbow_r,linewidth=0,antialiased=True) return fig,#动画def animate(i): ax.view_init(elev=10., azim=i) return fig,#动画挂起#在这里设置一个600帧的动画,每帧之间间隔0毫秒anim = animmation.FuncAnimation(fig, animate, frames = 600, init_func = init,interval = 0)

    3.6 第六步:plt相关设置

    #数据清空和画轴不显示plt.gca().set_axis_off()#图标标题名,字体大小和颜色plt.title('3D自旋转玫瑰花',fontsize=20,color='green')#图片展示plt.show()

    展开全文
  • 我是一名法国学生,目前我正在研究waves,我正在尝试制作一个wave的3D绘图,但我在python方面还不够好。第一个曲面可以用表演()但是如果我把绘图()我没有图形输出。在import numpy as npimport matplotlib.pyplot as...
  • unity4.0正式版终于跟大家见面了,早在之前的bata版中,我们就发现有一个新的动画系统:mecanim,据说unity科技想在unity4.0中植入一个新的gui,但现在看来我们是看不到了,或许在未来的unity5.0中我们会看见这种...
  • I am writing a program in python to experiment an academic idea. Look at a resultant image the program generates:The thick skeleton lines in the middle of the leaf is what need to be visualized. Eve.....
  • http://techbase.kde.org/Development/Languages/Python许多KDE样式使用SVG和大量动画。用户可以随时更改主题。我认为你应该更具体地说明你想要做什么样的动画。我不认为3D墙类型影响真的属于QT所属的小部件类别。听...
  • Python制作3D动画诗书塞外 Python程序员很多小伙伴可能不知道,在3D动画甚至电影制作的过程中,Python也在其中扮演了很重要的角色呢!比如皮克斯的动画片一般使用Maya软件制作,并且流程中使用到了大量的Maya ...
  • 我用了这个例子http://matplotlib.org/1.4.1/examples/animation/simple_3danim.html并修改了你的代码:from matplotlib import pyplot as pltimport numpy as npimport mpl_toolkits.mplot3d.axes3d as p3from ...
  • # Visual-制作3D演示动画[Visual](http://vpython.org) 是Python的一个简单易用的3D...在本节中将通过一个实例简单的介绍如何使用Visual制作3D动画。## 场景、物体和照相机先来看一个最简单的例子:```from visua...
  • 我正在尝试创建3D动画,每个球体都沿随机方向(向上,向下,向左,向右,向后或向前)移动。它们都在3D世界中移动(每个球体都有随机的X,Y和Z值),并且投影在2D屏幕上。我期望每个球体在随机方向上独立于其他球体而...
  • 我正在寻找动画我的图形(下面)和我不确定从何处或如何开始,因为我没有动画经验。我不知道它是如何工作的,也不知道代码的结构应该是什么,所以如果有人能提供一个伪代码或一个算法,我将非常感激。我也提供了我用来...
  • 因为我的工作,既需要做动画,又需要写代码。Python只是动态语言(脚本语言),它根本不适合搞开发,只适合当成辅助语言使用。要想当程序员,光靠Python是远远不够的,你还需要一门静态语言(工程语言)来支撑。目前主流...
  • 实现了3D方块动画旋转,自己也可以输出角度来控制。
  • 1.1 pyray库:1.1.1 python的一个2D和3D动画库,创建于2018年1月。1.1.2 目前只支持python2,基本不支持python3。1.1.3 而且是仅仅支持window操作系统。1.1.4 是不是很小众,而且最近基本没有升级的。======一次锻炼...
  • 以下是部分代码预览:"""模拟3D星空-海龟画图版-星星从右边出来,这个程序让很多星星从右边出来,越大的速度越快,越小的速度越慢。所以这样就模拟了一种3D效果。"""from turtle import *from random import random,...
  • 3dsmax2015官方中文版(3dsmax2015)能够为用户提供强大且即购即用的专业级3D动画创建功能,3dsmax2015具有用于3D建模、动画、模拟和渲染的创意工具集,可帮助游戏、电影和运动图形设计人员在更短的时间内创建更佳的3D...
  • 项目要求实现一种3d效果,网上找到了demo,但是是估计是 es5 实现的,在本地可以看到效果,但是现在需要放到 vue.js 里面去,整了一下午,各种错误。我把three.js直接拷贝到项目里面,然后按如下方式引入:require('...
  • 展开全部一、3D MAX3DS MAX广泛应用于广告、影视、工业设计、建筑设计、多媒体制作e69da5e6ba9062616964757a686964616f31333431363635、游戏、辅助教学以及工程可视化等领域。拥有强大功能的3DS MAX被广泛地应用于...
  • 现在有三维开发,需要一定的动画基础,利用开发逻辑实现,所以两个不分家。有大牛推荐以上软件组合,学习3D开发入门。这里再增加一点3D可视化开发的知识点,帮助大家更好地理解就业“钱”景。没错,3D可视化是工业...
  • Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它通过控制相机、视角、材质等相关属性来创造大量3D动画场景。我们开始引入three.js相关插件。1、首先利用淘宝镜像,操作命令为:cnpm install three2.接下来利用...
  • Bar3D(3D 柱状图)name -> str图例名称x_axis -> strx 坐标轴数据。需为类目轴,也就是不能是数值。y_axis -> stry 坐标轴数据。需为类目轴,也就是不能是数值。data -> [list], 包含列表的列表数据项,...
  • KeyShot 9 Pro for Mac是应用在Mac上的一款3D渲染和动画制作软件,keyshot是您快速创建精彩视觉效果所需的一切。在实时3D渲染工作流程显示结果即时,缩短了创建逼真的产品拍摄的时间。从科学上准确的材料和环境预设...
  • Python动画入门

    2020-10-01 11:33:38
    动画制作可以仿真一些机械运动,如机器人运动,高级的要用3D来仿真,但是二维是入门. ```python import math from turtle import * def main(): m=0 tracer(False) width(5);color(1,0,0) while m<320: clear...
  • 下面建议的代码生成一个PyQt窗口,其中显示3D条形图。可以使用滑块(时间变化)为图表设置动画。在import sysfrom PyQt4 import QtGui, QtCorefrom matplotlib.backends.backend_qt4agg import FigureCanvasQTA...
  • 《精灵梦叶罗丽》是一部人气极高的国产3D动画,在剧中有着许多颜值极高的叶罗丽仙子,这些仙子们平时都生活在叶罗丽仙境中,直到辛灵仙子被赶出了仙境之后,大部分的仙子们都随着辛灵一起去往了人类世界生存,在这里...
  • <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>图片3D动画翻转</title> <style> .box{ width: 600px; ...
  • 1.2 VPython 是python默认的3D模块,与PyOpenGL相比,容易上手,无需太多编程技巧。1.3 主要讲解入门,对代码进行修改,代码为注释版,同时讲一讲ta被人忽略的强大的数据可视化作图功能。1.4 支持中文,建议默认...
  • 动画的时间轴这个过渡的难点是让这些动画同步。我们不能真的取消挂载列... 阅读原文 最近发现很多网络请求都有可以优化的地方,虽然开发和测试都没有发现问题,但是可以让代码更加的优雅。想到了有四个方面可以优化...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 377
精华内容 150
关键字:

python3d动画

python 订阅