如何用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 相关文章推荐
pycharm 使用心得(四)显示行号
Jun 05 Python
使用url_helper简化Python中Django框架的url配置教程
May 30 Python
详解Python的Django框架中的中间件
Jul 24 Python
Python中Collections模块的Counter容器类使用教程
May 31 Python
Python中的FTP通信模块ftplib的用法整理
Jul 08 Python
详解Golang 与python中的字符串反转
Jul 21 Python
Python实现正弦信号的时域波形和频谱图示例【基于matplotlib】
May 04 Python
Django文件存储 自己定制存储系统解析
Aug 02 Python
Python3 Click模块的使用方法详解
Feb 12 Python
解决pycharm安装第三方库失败的问题
May 09 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
Jun 18 Python
Python CategoricalDtype自定义排序实现原理解析
Sep 11 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
PHP的SQL注入实现(测试代码安全不错)
2011/02/27 PHP
php 截取字符串并以零补齐str_pad() 函数
2011/05/07 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
2013/02/16 PHP
实例详解PHP中html word 互转的方法
2016/01/28 PHP
laravel与thinkphp之间的区别与优缺点
2021/03/02 PHP
Mootools 1.2教程 Fx.Tween的使用
2009/09/15 Javascript
一些mootools的学习资源
2010/02/07 Javascript
Jquery操作radio的简单实例
2014/01/06 Javascript
js关于字符长度限制的问题示例探讨
2014/01/24 Javascript
jQuery元素的隐藏与显示实例
2015/01/20 Javascript
基于jquery实现的树形菜单效果代码
2015/09/06 Javascript
jQuery表格插件datatables用法汇总
2016/03/29 Javascript
在DWR中实现直接获取一个JAVA类的返回值的两种方法
2016/12/25 Javascript
bootstrap导航、选项卡实现代码
2016/12/28 Javascript
利用原生JS与jQuery实现数字线性变化的动画
2017/02/24 Javascript
jquery 禁止鼠标右键并监听右键事件
2017/04/27 jQuery
JavaScript实现简单的树形菜单效果
2017/06/23 Javascript
JS数组去重常用方法实例小结【4种方法】
2018/05/28 Javascript
实用Javascript调试技巧分享(小结)
2019/06/18 Javascript
JavaScript中如何对多维数组(矩阵)去重的实现
2019/12/04 Javascript
微信小程序实现带放大效果的轮播图
2020/05/26 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
2020/10/29 Javascript
Vue使用路由钩子拦截器beforeEach和afterEach监听路由
2020/11/16 Javascript
[02:05]2014DOTA2西雅图国际邀请赛 BBC第二天小组赛总结
2014/07/11 DOTA
[15:56]Heroes18_暗影萨满(完美)
2014/10/31 DOTA
[01:34]DOTA2 7.22版本新增神杖效果一览(敏捷英雄篇)
2019/05/28 DOTA
Python使用SocketServer模块编写基本服务器程序的教程
2016/07/12 Python
用python生成与调用cntk模型代码演示方法
2019/08/26 Python
python 3.7.4 安装 opencv的教程
2019/10/10 Python
Series和DataFrame使用简单入门
2019/11/13 Python
python 爬虫如何实现百度翻译
2020/11/16 Python
三八活动策划方案
2014/08/17 职场文书
2014法院干警廉洁警示教育思想汇报
2014/09/13 职场文书
服装区域经理岗位职责
2015/04/10 职场文书
门面租赁合同范文
2019/08/06 职场文书
win10系统xps文件怎么打开?win10打开xps文件的两种操作方法
2022/07/23 数码科技