虽然matplotlib主要专注于绘图,并且主要是二维的图形,但是它也有一些不同的扩展,能让我们在地理图上绘图,让我们把Excel和3D图表结合起来。在matplotlib的世界里,这些扩展叫做工具包(toolkits)。工具包是一些关注在某个话题(如3D绘图)的特定函数的集合。

比较流行的工具包有Basemap、GTK 工具、Excel工具、Natgrid、AxesGrid和mplot3d。

本节将探索关于mplot3d的更多功能。mpl_toolkits.mplot3工具包提供了一些基本的3D绘图功能,其支持的图表类型包括散点图(scatter)、曲面图(surf)、线图(line)和网格图(mesh)。虽然mplot3d不是一个最好的3D图形绘制库,但是它是伴随着matplotlib产生的,因此我们对其接口已经很熟悉了。

准备工作

基本来讲,我们仍然需要创建一个图表并把想要的坐标轴添加到上面。但不同的是我们为图表指定的是3D视图,并且添加的坐标轴是Axes3D。

现在,我们可以使用几乎相同的函数来绘图了。当然,函数的参数是不同的,需要为3个坐标轴提供数据。

例如,我们要为函数mpl_toolkits.mplot3d.Axes3D.plot指定xsyszszdir参数。其他的参数则直接传给matplotlib.axes.Axes.plot。下面来解释一下这些特定的参数。

1.xsys:x轴和y轴坐标。

2.zs:这是z轴的坐标值,可以是所有点对应一个值,或者是每个点对应一个值。

3.zdir:决定哪个坐标轴作为z轴的维度(通常是zs,但是也可以是xs或者ys)。

提示:模块mpl_toolkits.mplot3d.art3d包含了3D artist代码和将2D artists转化为3D版本的函数。在该模块中有一个rotate_axes方法,该方法可以被添加到Axes3D中来对坐标重新排序,这样坐标轴就与zdir一起旋转了。zdir默认值为z。在坐标轴前加一个'``-``'会进行反转转换,这样一来,zdir的值就可以是x-xy-yz或者-z

操作步骤

以下代码演示了我们所解释的概念。

import randomimport numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.dates as mdatesfrom mpl_toolkits.mplot3d import Axes3Dmpl.rcParams['font.size'] = 10fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')for z in [2011, 2012, 2013, 2014]:xs = xrange(1,13)ys = 1000 * np.random.rand(12)color =plt.cm.Set2(random.choice(xrange(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()

上述代码生成如图5-1所示的图表。

图5-1

工作原理

我们需要像在2D世界中那样做相同的准备工作。不同的是,在这里需要指定后端(backend)的种类。然后生成了一些随机数据,例如4年的销售额(2011-2014)。

我们需要为3D坐标轴指定相同的Z值。

从颜色映射集合中随机选择一种颜色,然后把它和每一个Z-order集合的xsys对关联起来。最后,用xsys对渲染出柱状条序列。

补充说明

其他的一些matplotlib的2D绘图函数在这里也是可以用的,例如scatter()plot()有着相似的接口,但有额外的点标记大小参数。我们对contourcontourfbar也非常熟悉。

仅在3D中出现的新图表类型有线框图(wireframe)、曲面图(surface)和三翼面图(tri-surface)。

在下面的示例代码中,我们绘制了著名的Pringle函数的三翼面图,数学专业上的叫法是双曲面抛物线(hyperbolic paraboloid)。

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import matplotlib.pyplot as plt
import numpy as npn_angles = 36
n_radii = 8# An array of radii
# Does not include radius r=0, this is to eliminate duplicate points
radii = np.linspace(0.125, 1.0, n_radii)# An array of angles
angles = np.linspace(0, 2 * np.pi, n_angles, endpoint=False)# Repeat all angles for each radius
angles = np.repeat(angles[..., np.newaxis], n_radii, axis=1)# Convert polar (radii, angles) coords to cartesian (x, y) coords
# (0, 0) is added here. There are no duplicate points in the (x, y)
plane
x = np.append(0, (radii * np.cos(angles)).flatten())
y = np.append(0, (radii * np.sin(angles)).flatten())# Pringle surfacez = 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()

上面的代码生成如图5-2所示的图形。

图5-2

本文摘自《Python数据可视化编程实战》

Python数据可视化编程实战

内容简介:
本书是一本使用Python实现数据可视化编程的实战指南,介绍了如何使用Python最流行的库,通过60余种方法创建美观的数据可视化效果。

全书共8章,分别介绍了准备工作环境、了解数据、绘制并定制化图表、学习更多图表和定制化、创建3D可视化图表、用图像和地图绘制图表、使用正确的图表理解数据以及更多的matplotlib知识。

本书适合那些对Python编程有一定基础的开发人员阅读,可以帮助读者从头开始了解数据、数据格式、数据可视化,并学会使用Python可视化数据。

点此购买:http://item.jd.com/11676691.html

【Python实现数据可视化】创建3D柱状图相关推荐

  1. python数据可视化创建_【Python数据可视化】创建3D可视化图表

    创建3D柱状图 import random import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt mp ...

  2. Python入门到实战(五)自动化办公、pandas操作Excel、数据可视化、绘制柱状图、操作Word、数据报表生成、pip install国内镜像下载

    Python入门到实战(五)conda使用.pandas操作Excel.数据可视化.绘制柱状图.操作Word.数据报表生成.pip install国内镜像下载 conda使用 常用操作 配置VS+Co ...

  3. python使用matplotlib可视化堆叠的柱状图(stacked bar plot)、多个类别的数据在分类变量层面累积堆叠起来

    python使用matplotlib可视化堆叠的柱状图(stacked bar plot).多个类别的数据在分类变量层面累积堆叠起来 目录

  4. 【教程】Python科研数据可视化、MATLAB科研数据可视化

    在过去的20年中,随着社会产生数据的大量增加,对数据的理解.解释与决策的需求也随之增加.而固定不变是人类本身,所以我们的大脑必须学会理解这些日益增加的数据信息.所谓"一图胜千言", ...

  5. python与excel做数据可视化-用Python进行数据可视化的10种方法

    原标题:用Python进行数据可视化的10种方法 2015-11-19 关于转载授权 大数据文摘作品,欢迎个人转发朋友圈,自媒体.媒体.机构转载务必申请授权,后台留言"机构名称+转载&quo ...

  6. 【Python】数据可视化教程来了!

    来自:Datawhale????数据可视化小组 开源初衷 Matplotlib可以说是python数据可视化最重要且常见的工具之一,几乎每个和数据打交道的人都不可避免,还有大量可视化工具是基于它的二次 ...

  7. 基于MATLAB、Python科研数据可视化

    目录 MATLAB科研数据可视化 Python科研数据可视化 MATLAB科研数据可视化 互联网的飞速发展伴随着海量信息的产生,而海量信息的背后对应的则是海量数据.如何从这些海量数据中获取有价值的信息 ...

  8. python代码示例图形-纯干货:手把手教你用Python做数据可视化(附代码)

    原标题:纯干货:手把手教你用Python做数据可视化(附代码) 导读:制作提供信息的可视化(有时称为绘图)是数据分析中的最重要任务之一.可视化可能是探索过程的一部分,例如,帮助识别异常值或所需的数据转 ...

  9. python 图表美化_你的图表不美观怎么办,Python实现数据可视化帮你实现

    之前突然看到一个用Python实现数据可视化的技术,小编觉得解决了生活中的好多问题,大家一起来看看这个神器.1.主页 首先,这个主页的设计就是我非常喜欢的风格,简单清晰,第一眼就让人有特别清爽的感觉, ...

最新文章

  1. OpenCV 笔记(09)— 常用的数据结构和函数(Vec、Point、Scalar、Size、Rect、cvtColor)
  2. cpu,内存,虚拟内存,硬盘,缓存之间是什么关系??
  3. 几个有用的eclipse插件安装地址
  4. 图形处理(七)基于热传播的测地距离计算-Siggraph 2013
  5. 总结2020,起航2021,奔向腾讯,实现增长!
  6. S3C2440之MMU
  7. Android辅助服务监听dialog,Android开发中对话框辅助类——DialogHelper
  8. vue里面v-once/ref【获取标签里面的内容】
  9. 惠普收购Palm意在遏制同系竞争
  10. 推荐系统/计算广告相关资料整理
  11. AutoJs4.1.0实战教程---终极福利Apk
  12. 用php编写室友通讯录_使用 XML 和 PHP 创建一个更具适应性的电话簿和通讯录
  13. 最详细的 K8S 学习笔记总结
  14. PackageManager获取应用列表
  15. html样式格式文件的后缀名是( ),什么是HTML格式?什么是CSS格式?
  16. 时间序列相似性度量-DTW
  17. 怎样使用Maya快速制作角色模型
  18. 勒索病毒解密SQL数据库修复文档文件服务器中毒远程处理数据恢
  19. 数学建模 —— 多元回归分析
  20. texturepacker 打包图集

热门文章

  1. 打印数组所有排列 python
  2. Java SE之I/O流:知识框架
  3. autoreleasing的用法介绍:
  4. Xcode 卸载方法
  5. 牛客网-剑指offer 第一题(二维数组中的查找)
  6. 软件测试作业8:分析自动售货机软件例子生成的判定表图例
  7. sqlmap报错注入
  8. 【python数据挖掘课程】十二.Pandas、Matplotlib结合SQL语句对比图分析
  9. HarmonyOS之系统设置项的查询和使用
  10. LeetCode 面试题 10.02. 变位词组