创建3D柱状图

import random

import numpy as np

import matplotlib as mpl

import matplotlib.pyplot as plt

mpl.rcParams['font.size'] = 10

fig = plt.figure()

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

for z in [2011, 2012, 2013, 2014]:

# xs和ys是x轴和y轴坐标;zs是z轴的坐标值,可以是所有点对应一个值

# 或者是每个点对应一个值;zdir决定那个坐标轴作为z轴的维度

xs = range(1, 13)

ys = 1000 * np.random.rand(12)

color = plt.cm.Set2(random.choice(range(plt.cm.Set2.N)))

ax.bar(xs, ys, zs=z, zdir='y', color=color, alpha=0.8)

ax.xaxis.set_major_locator(mpl.ticker.FixedLocator(xs))

ax.yaxis.set_major_locator(mpl.ticker.FixedLocator(ys))

ax.set_xlabel('Month')

ax.set_ylabel('Year')

ax.set_zlabel('Sales Net [usd]')

plt.show()

三翼面图(双曲面抛物线)

from matplotlib import cm

import matplotlib.pyplot as plt

import numpy as np

n_angles = 36

n_radii = 8

# 半径的数组,不包括半径r=0,这是为了消除重复点

radii = np.linspace(0.125, 1.0, n_radii)

# 角度的数组

angles = np.linspace(0, 2 * np.pi, n_angles, endpoint=False)

# 为每个半径重复所有的角度

angles = np.repeat(angles[..., np.newaxis], n_radii, axis=1)

# 转换极坐标(半径,角度)坐标到笛卡尔坐标(x, y)坐标

# (0,0)在这里添加。(x, y)平面上没有重复的点

x = np.append(0, (radii * np.cos(angles)).flatten())

y = np.append(0, (radii * np.sin(angles)).flatten())

# Pringle surface

z = np.sin(-x * y)

fig = plt.figure()

ax = fig.gca(projection='3d')

ax.plot_trisurf(x, y, z, cmap=cm.jet, linewidth=0.2)

plt.show()

绘制3D直方图

import numpy as np

import matplotlib.pyplot as plt

import matplotlib as mpl

from mpl_toolkits.mplot3d import Axes3D

mpl.rcParams['font.size'] = 10

samples = 25

x = np.random.normal(5, 1, samples)

y = np.random.normal(3, .5, samples)

fig = plt.figure()

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

# 计算二维直方图

hist, xedges, yedges = np.histogram2d(x, y, bins=10)

# 计算x,y空间的位置

elements = (len(xedges) - 1) * (len(yedges) - 1)

xpos, ypos = np.meshgrid(xedges[:-1] + .25, yedges[:-1] + .25)

xpos = xpos.flatten()

ypos = ypos.flatten()

zpos = np.zeros(elements)

# 使每个bar有相同的宽度

dx = .1 * np.ones_like(zpos)

dy = dx.copy()

# bar的高度

dz = hist.flatten()

ax.bar3d(xpos, ypos, zpos, dx, dy, dz, color='b', alpha=0.4)

ax.set_xlabel('X Axis')

ax.set_ylabel('Y Axis')

ax.set_zlabel('Z Axis')

# 散点图中绘制相同的x、y相关以作比较

ax2 = fig.add_subplot(212)

ax2.scatter(x, y)

ax2.set_xlabel('X Axis')

ax2.set_ylabel('Y Axis')

plt.show()

在matplotlib中创建动画

动画框架主要的类是matplotlib.animation.Animation,这个类是一个基类,它可以针对不同的行为被子类化。

Animation(object)此类用matplotlib创建动画。它仅仅是一个基类,应该被子类化以以提供所需的行为

TimeAnimation(Animation)这个动画子类支持基于时间的动画,每interval*milliseconds绘制一个新的帧

ArtistAnimation(TimeAnimation)在调用此函数之前,所有绘制工作应当已经完成,并且相关的artists已经被保存

FuncAnimation(TimeAnimation)其通过重复地调用一个函数生成动画,可以为函数传入参数,参数是可选的

import numpy as np

from matplotlib import pyplot as plt

from matplotlib import animation

plt.rcParams['animation.ffmpeg_path'] = 'F:\\Python3\\ffmpeg-20190815-3aeb681-win64-static\\bin\\ffmpeg.exe'

fig = plt.figure()

ax = plt.axes(xlim=(0, 2), ylim=(-2, 2))

line, = ax.plot([], [], lw=2)

def init():

"""清空当前帧"""

line.set_data([], [])

return line,

def animate(i):

"""

:param i:帧计数器

:return:int

"""

x = np.linspace(0, 2, 1000)

y = np.sin(2 * np.pi * (x - 0.01 * i) * np.cos(2 * np.pi * (x - 0.01 * i)))

line.set_data(x, y)

return line,

# 这个调用将使工作运行起来,连接init和animate函数并绘制我们想要的图形

anim = animation.FuncAnimation(fig, animate, init_func=init,

frames=200, interval=20, blit=True)

# 这个调用创建视频文件。每帧都保存为PNG文件,然后由ffmpeg编码器处理成MPEG4文件,我们可以通过extra_args将各种参数传递给ffmpeg

FFwriter = animation.FFMpegWriter(fps=20, extra_args=['-vcodec', 'libx264'])

anim.save('basic_animation.mp4', writer=FFwriter)

补充说明:

安装与配置ffmpeg:

1)ffmepg下载

2)解压到你想要解压的文件夹,复制路径,如下图

3)配置环境变量,将复制的路径添加到系统变量Path中,如下图:

4)在命令行中验证安装成功,打开命令行,输入ffmpeg -version验证

用OpenGL制作动画

OpenGL是一个规范,而不是一个实现,因此OpenGL本身并没有任何实现代码,所有的实现是遵循该规范而开发的库。这些库是跟随操作系统或者由如NVIDIA或者AMD/ATI等不同的显卡厂商发布的。因为OpenGL是一个图形渲染库,所以它不知道我们在屏幕上绘制的是什么,它不关心我们画的是否是一只猫、一个球或者一条线。因此,要移动一个已经渲染的对象,需要清除并重绘整个图像,为了让某个物体动起来,我们需要很快地循环绘制和重绘所有内容,并把它显示给用户,这样用户就认为其正在观看一个动画。

Mayavi是一个专门用于3D的库;Pyglet是一个纯Python的图形库;Glumpy是一个构建在Numpy之上的快速图形渲染库;Pyglet和OpenGL用来可视化大数据(百万级数据点)

Mayavi可以作为一个开发库/框架,或者一个应用程序来使用。Mayavi应用程序包含了一个可视化编辑器,可以用于简单的数据研究和一些交互可视化。

Mayavi安装

可以仿照安装安装Pygame的博客进行安装,安装步骤是一样的,只是安装的库不同而已。

注意: 需要先安装PyQt4,Traits和VTK,否则直接安装Mayavi会因为缺少必要的依赖而报错,PyQt、Traits和VKT的安装也参考上面的安装Pygame的步骤,这些依赖安装完成就可以安装mayavi了。

简单实现带旋转图形的窗口

import numpy as np

from mayavi.mlab import *

n_mer, n_long = 6, 11

pi = np.pi

dphi = pi / 1000.0

phi = np.arange(0.0, 2 * pi + 0.5 * dphi, dphi, 'd')

mu = phi * n_mer

x = np.cos(mu) * (1 + np.cos(n_long * mu / n_mer) * 0.5)

y = np.sin(mu) * (1 + np.cos(n_long * mu / n_mer) * 0.5)

z = np.sin(n_long * mu / n_mer) * 0.5

l = plot3d(x, y, z, np.sin(mu), tube_radius=0.025, colormap='Spectral')

ms = l.mlab_source

for i in range(100):

x = np.cos(mu) * (1 + np.cos(n_long * mu / n_mer + np.pi * (i + 1) / 5.) * 0.5)

scalars = np.sin(mu + np.pi * (i + 1) / 5)

ms.set(x=x, scalars=scalars)

show()

简单示例—pyglet

视频文件使用上面ffmpeg生成的视频为样例。

import pyglet

from pyglet.media import *

window = pyglet.window.Window()

player = Player()

source = load('basic_animation.mp4')

player.queue(source)

player.play()

print(player.get_texture())

@window.event

def on_draw():

window.clear()

player.get_texture().blit(0, 100)

pyglet.app.run()

本文地址:https://blog.csdn.net/qq_36477513/article/details/110082285

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

python数据可视化创建_【Python数据可视化】创建3D可视化图表相关推荐

  1. python制作简单动画_把数据摇起来!用Python制作动画可视化效果!

    Python 中有很多不错的数据可视化库,但是极少能渲染 GIF 图或视频动画效果.本文就分享一下如何用 MoviePy 作为其他可视化库的通用插件,制作动画可视化效果,毕竟这年头,没图不行,有动图更 ...

  2. python绘制八角图形_国内数据可视化公司

    数据是非常强大的.当然,如果你能真正理解它想告诉你的内容,那它的强大之处就更能体现出来了. 通过观察数字和统计数据的转换以获得清晰的结论并不是一件容易的事.必须用一个合乎逻辑的.易于理解的方式来呈现数 ...

  3. python海量数据分析师职业技能_大数据分析师技能图谱详解与零基础自学内容大全...

    全球的数据量正在以每18个月翻一倍的惊人速度增长,世界正在高速数字化,大数据堪比石油,如何掘金大数据是所有个人.企业和国家的机遇和挑战.中国是人才大国,能理解和应用大数据的创新人才更是稀缺资源.大数据 ...

  4. python工程师干什么的_大数据开发工程师薪资待遇及招聘要求?

     目录: 大数据开发是干什么的? 大数据开发需要掌握哪些技术?学习路线如何? 大数据开发需要掌握数学知识吗? 大数据开发就业前景如何? 大数据开发工程师薪资待遇及招聘要求? 大数据开发是干什么的? 大 ...

  5. python大数据工程师 培训_大数据工程师需要学习哪些?

    经常有初学者在QQ问我,自己想往大数据方向发展,该学哪些技术,学习路线是什么样的,觉得大数据很火,就业很好,薪资很高.如果自己很迷茫,为了这些原因想往大数据方向发展,也可以,那么我就想问一下,你的专业 ...

  6. python增大音频音量_音频数据增强及python实现

    博客作者:凌逆战 博客地址:https://www.cnblogs.com/LXP-Never/p/13404523.html 音频时域波形具有以下特征:音调,响度,质量.我们在进行数据增强时,最好只 ...

  7. python大数据工程师证书_大数据工程师需要学习哪些?

    其实这就是想告诉你的大数据的三个发展方向,平台搭建/优化/运维/监控.大数据开发/设计/架构.数据分析/挖掘.请不要问我哪个容易,哪个前景好,哪个钱多. 先扯一下大数据的4V特征: 数据量大,TB-& ...

  8. Python笔记_64_Vue_M-V-VM思想_显示数据_常用指令_操作属性_绑定事件_操作样式_条件渲染指令_列表渲染指令

    文章目录 Vue vue.js的M-V-VM思想 快速使用 显示数据 常用指令 操作属性 绑定事件 操作样式 条件渲染指令 列表渲染指令 Vue vue.js是目前前端web开发最流行的工具库,由尤雨 ...

  9. python大数据工程师 培训_大数据工程师学习之路

    大数据的作用:发现过去事件的特征 预测未来 最优化选择 职位划分:数据产品经理 数据分析师->商业敏感性,产品经理的助手 数据研发工程师 数据挖掘工程师/数据科学家 需要准备的技术知识: Lin ...

  10. hbase可视化工具_做数据可视化,三大热门BI工具试用总结

    什么BI分析工具好用?今天通过3款BI产品Power BI.FineBI.亿信ABI为范例,进行对比分析. 一.产品背景 Power BI是微软的,14年15年开始初见苗头,之前主要是基于Excel的 ...

最新文章

  1. stm32 文件系统dma大小_「正点原子NANO STM32F103开发板资料连载」第二十二章 DMA 实验...
  2. 邵阳计算机专业哪家最好,邵阳学院专业排名 最好的专业有哪些
  3. 爬虫框架webmagic与spring boot的结合使用--转
  4. PP 关于工单领料的总结
  5. kubernetes1.8.4 安装指南 -- 11. 安装kubernetes dashboard
  6. 一个技术人的知识管理方法论
  7. 服务器系统核心和带gui区别,Windows Server 2012图形用户界面(GUI)和服务器核心(Server Core)之间的切换...
  8. mysql权限系统的工作原理_Mysql权限系统工作原理
  9. 【敏感度,查询,裁剪代码实现】差分隐私代码实现系列(六)
  10. 电商设计没灵感,PSD分层模板,快速提升你的设计水平!
  11. ORB_SLAM3在ubuntu18.04安装和初步测试+轨迹评估
  12. Web专家周末聚会都会说点啥
  13. 大数据第三季--flume(day2)-徐培成-专题视频课程
  14. oracle cdb to no cdb,【CDB】怎样转换non-CDB to CDB
  15. win10+GeForce 940mx安装cuda
  16. Riverbed宣布收购SD-WAN供应商Ocedo
  17. Uncaught TypeError:Cannot read property 'call' of underfined
  18. 该如何选择适合的服务器
  19. 小米红米4(标准版)解BL锁教程申请BootLoader解锁教程
  20. 好玩的centos代码简介()

热门文章

  1. Python 真的好学吗?
  2. .NET调用百度天气api经验
  3. Heckman两步法 | 样本选择模型 处理效应模型
  4. Vue中el-table追加行后固定列滚动错位问题
  5. 好记性不如烂笔头The palest ink is better than the best memory
  6. unity 模拟抛物线
  7. bzoj 4805: 欧拉函数求和
  8. 消费者太穷不愿买手机?苹果的份额创新高,撕下国产手机遮羞布
  9. 软件测试简历上的职业技能怎么写,测试工程师岗位个人简历个人技能范文
  10. Android 今日收获