如何用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脚本实时处理log文件的方法
Nov 21 Python
Python 使用PIL numpy 实现拼接图片的示例
May 08 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
Jul 04 Python
Python实现处理逆波兰表达式示例
Jul 30 Python
Python模拟百度自动输入搜索功能的实例
Feb 14 Python
Python 3.8 新功能全解
Jul 25 Python
python集合常见运算案例解析
Oct 17 Python
python实现遍历文件夹图片并重命名
Mar 23 Python
django实现将修改好的新模型写入数据库
Mar 31 Python
python使用布隆过滤器的实现示例
Aug 20 Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
Nov 18 Python
python使用openpyxl库读写Excel表格的方法(增删改查操作)
May 02 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
轻松入门: 煮好咖啡的七个诀窍
2021/03/03 冲泡冲煮
PHP中利用substr_replace将指定两位置之间的字符替换为*号
2011/01/27 PHP
php中is_null,empty,isset,unset 的区别详细介绍
2013/04/28 PHP
php随机显示图片的简单示例
2014/02/15 PHP
php的闭包(Closure)匿名函数初探
2016/02/14 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
如何让您的中波更粗更长 - 中波框形天线制作
2021/03/10 无线电
加载 Javascript 最佳实践
2011/10/30 Javascript
IE下JS读取xml文件示例代码
2013/08/05 Javascript
浏览器页面区域大小的js获取方法
2013/09/21 Javascript
jquery slibings选取同级其他元素的实现代码
2013/11/15 Javascript
简洁实用的BootStrap jQuery手风琴插件
2016/08/31 Javascript
SVG描边动画
2017/02/23 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
2017/12/22 Javascript
vue cli构建的项目中请求代理与项目打包问题
2018/02/26 Javascript
5分钟学会Vue动画效果(小结)
2018/07/21 Javascript
js实现点赞按钮功能的实例代码
2020/03/06 Javascript
微信小程序自定义弹出层效果
2020/05/26 Javascript
Python实现抓取百度搜索结果页的网站标题信息
2015/01/22 Python
python批量设置多个Excel文件页眉页脚的脚本
2018/03/14 Python
pyhton列表转换为数组的实例
2018/04/04 Python
Python中实例化class的执行顺序示例详解
2018/10/14 Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
2019/07/23 Python
django2.2安装错误最全的解决方案(小结)
2019/09/24 Python
使用TensorFlow-Slim进行图像分类的实现
2019/12/31 Python
PyTorch 普通卷积和空洞卷积实例
2020/01/07 Python
Python实例方法、类方法、静态方法区别详解
2020/09/05 Python
全球知名提供各类营养保健品的零售商:Vitamin Shoppe
2016/10/09 全球购物
澳大利亚制造的蜡烛和扩散器:Glasshouse Fragrances
2018/05/20 全球购物
应届生高等护理求职信
2013/10/12 职场文书
优秀团队获奖感言
2014/02/19 职场文书
商务英语专业毕业生求职信
2014/07/06 职场文书
局机关干部群众路线个人对照检查材料思想汇报
2014/10/05 职场文书
2014年职称评定工作总结
2014/11/26 职场文书
爱国电影观后感
2015/06/19 职场文书
vue3中的组件间通信
2021/03/31 Vue.js