如何用Python绘制3D柱形图


Posted in Python onSeptember 16, 2020

本文主要讲解如何使用python绘制三维的柱形图,如下图

如何用Python绘制3D柱形图

源代码如下:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

#构造需要显示的值
X=np.arange(0, 5, step=1)#X轴的坐标
Y=np.arange(0, 9, step=1)#Y轴的坐标
#设置每一个(X,Y)坐标所对应的Z轴的值,在这边Z(X,Y)=X+Y
Z=np.zeros(shape=(5, 9))
for i in range(5):
  for j in range(9):
    Z[i, j]=i+j

xx, yy=np.meshgrid(X, Y)#网格化坐标
X, Y=xx.ravel(), yy.ravel()#矩阵扁平化
bottom=np.zeros_like(X)#设置柱状图的底端位值
Z=Z.ravel()#扁平化矩阵

width=height=1#每一个柱子的长和宽

#绘图设置
fig=plt.figure()
ax=fig.gca(projection='3d')#三维坐标轴
ax.bar3d(X, Y, bottom, width, height, Z, shade=True)#
#坐标轴设置
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z(value)')
plt.show()

代码解读:

1、构造需要显示的数据

如下图所示,X坐标取值为[0,1,2,3,4],Y坐标取值为[0,1,2,3,4,5,6,7,8],每一个(X,Y)组合的值Z=X+Y,所需要绘制的图就是在X,Y所对应的坐标位置上面根据Z的值来绘制柱形图。

如何用Python绘制3D柱形图

2、坐标设置

将坐标网格化, X=[0,1,2,3,4],Y=[0,1,2,3,4,5,6,7,8]网格化的结果,如下图所示。可以理解为,X参照Y进行了广播(broadcast), Y参照X进行了广播,分别添加了一个新的维度,并且进行复制。结合xx和yy就得到了所有的X,Y的坐标组合,经过扁平化之后这种对应关系保持不变。代码中的bottom是用来设置绘制每一个柱子的Z坐标的,在此全部都设置为0,而width和height设置每一个柱子的长和宽。

如何用Python绘制3D柱形图

3、bar3d

ax.bar3d(X, Y, bottom, width, height, Z, shade=True):
X,Y:柱子在XY平面的起始坐标
bottom:柱子在Z轴上的起始坐标
width、height:柱子的长宽
Z:数字沿Z轴的长度
shade:是否显示阴影(设置为True立体效果会更好)

shde=True

如何用Python绘制3D柱形图

shade=False

如何用Python绘制3D柱形图

如果需要绘制多个子图,并且里面每一个子图都是3D的,只需要将上述代码进行些许修改即可,案例如下:

fig=plt.figure()
  ax=fig.add_subplot(1, 3, 1, projection='3d')
  ax.bar3d(x, y, z, width, height, top, shade=True)

  ax=fig.add_subplot(1, 3, 2, projection='3d')
  ax.bar3d(x, y, z, width, height, top2, shade=True)

  ax=fig.add_subplot(1, 3, 3, projection='3d')
  ax.bar3d(x, y, z, width, height, top3, shade=True)

  plt.show()

以上就是如何用Python绘制3D柱形图的详细内容,更多关于python绘制柱形图的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python基于mysql实现的简单队列以及跨进程锁实例详解
Jul 07 Python
Python决策树分类算法学习
Dec 22 Python
Django自定义manage命令实例代码
Feb 11 Python
详解pyqt5 动画在QThread线程中无法运行问题
May 05 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
Jul 17 Python
对python读取zip压缩文件里面的csv数据实例详解
Feb 08 Python
python里 super类的工作原理详解
Jun 19 Python
python二进制读写及特殊码同步实现详解
Oct 11 Python
Python 复平面绘图实例
Nov 21 Python
Tensorflow加载Vgg预训练模型操作
May 26 Python
python 如何读、写、解析CSV文件
Mar 03 Python
Python与C++中梯度方向直方图的实现
Mar 17 Python
Python Merge函数原理及用法解析
Sep 16 #Python
简单了解Python字典copy与赋值的区别
Sep 16 #Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
Sep 16 #Python
pycharm2020.2 配置使用的方法详解
Sep 16 #Python
python Matplotlib模块的使用
Sep 16 #Python
Python类成员继承重写的实现
Sep 16 #Python
PyCharm设置注释字体颜色以及是否倾斜的操作
Sep 16 #Python
You might like
8个必备的PHP功能开发
2015/10/02 PHP
thinkphp配置文件路径的实现方法
2016/08/30 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
2017/02/16 PHP
Laravel下生成验证码的类
2017/11/15 PHP
PHP FileSystem 文件系统常用api整理总结
2019/07/12 PHP
JavaScript中出现乱码的处理心得
2009/12/24 Javascript
jQuery学习笔记之创建DOM元素
2015/01/19 Javascript
javascript实现uploadify上传格式以及个数限制
2015/11/23 Javascript
jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)
2016/06/08 Javascript
JQuery PHP图片在线裁剪实例
2020/07/27 Javascript
微信小程序 地图(map)实例详解
2016/11/16 Javascript
JS倒计时实例_天时分秒
2017/08/22 Javascript
vue父组件点击触发子组件事件的实例讲解
2018/02/08 Javascript
对vue v-if v-else-if v-else 的简单使用详解
2018/09/29 Javascript
Vue 全家桶实现移动端酷狗音乐功能
2018/11/16 Javascript
JS使用H5实现图片预览功能
2019/09/30 Javascript
python dict remove数组删除(del,pop)
2013/03/24 Python
独特的python循环语句
2016/11/20 Python
Python正则表达式知识汇总
2017/09/22 Python
python实现矩阵打印
2019/03/02 Python
Python3内置模块random随机方法小结
2019/07/13 Python
OpenCV+face++实现实时人脸识别解锁功能
2019/08/28 Python
Django框架反向解析操作详解
2019/11/28 Python
Pytorch实现LSTM和GRU示例
2020/01/14 Python
解决pycharm同一目录下无法import其他文件
2020/02/12 Python
带有css3动画效果的兼容多浏览器简单导航条示例
2014/01/26 HTML / CSS
css3 图片圆形显示 如何CSS将正方形图片显示为圆形图片布局
2014/10/10 HTML / CSS
利用CSS3伪元素实现逐渐发光的方格边框
2017/05/07 HTML / CSS
英国泰坦旅游网站:全球陪同游览,邮轮和铁路旅行
2016/11/29 全球购物
购买200个世界上最好的内衣品牌:Bare Necessities
2017/02/11 全球购物
经济信息管理专业大学生求职信
2013/09/27 职场文书
体育教师自荐信范文
2013/12/16 职场文书
聘任证明怎么写
2015/03/02 职场文书
幼儿园家长心得体会
2016/01/21 职场文书
护士自荐信范文(2016推荐篇)
2016/01/28 职场文书
python基础之类属性和实例属性
2021/10/24 Python