Python三维图像的绘制以及相关图例添加(3D图像 - 图例)
数据处理
此部分自行完成,预先准备好需要的数据即可。
本例子实现的是:要在4*4的格子里面的3个格子里分别绘制3条不同颜色的图形。
(为了更加直观,绘图相关的程序不使用循环)
// example
h1 = [0.4, 0.3, 0.5]
h2 = [0.9, 0.3, 0.1]
h3 = [0.2, 0.4, 0.8]
三维柱体绘制
(为了更加直观,绘图相关的程序不使用循环)
fig = plt.figure(figsize=(9, 6))
ax = fig.add_subplot(111, projection='3d')
x = np.arange(1, 4, 1)
y = np.arange(1, 4, 1)# Construct arrays with the dimensions for the 16 bars.
dx = dy = 0.3 # 设置柱长、宽
ax.bar3d(3, 3, 0, dx, dy, h1[0], 'b')
ax.bar3d(0, 1, 0, dx, dy, h1[1], 'b')
ax.bar3d(3, 0, 0, dx, dy, h1[2], 'b')ax.bar3d(3.6, 3, 0, dx, dy, h2[0], 'r')
ax.bar3d(0.6, 1, 0, dx, dy, h2[1], 'r')
ax.bar3d(3.6, 0, 0, dx, dy, h2[2], 'r')ax.bar3d(3.6, 3.6, 0, dx, dy, h3[0], 'y')
ax.bar3d(0.6, 1.6, 0, dx, dy, h3[1], 'y')
ax.bar3d(3.6, 0.6, 0, dx, dy, h3[2], 'y')
可以看到3维柱形是通过ax.bar3d()函数设置的,
其中传入的参数分别是x,y,z轴的开始坐标,dx, dy, h[i]设置柱体的长、宽、高。
如果要绘制多个柱体,可以直接循环实现。
3D图像图例的添加
y_unique = np.unique(y-1) # 可以看作图例类型个数
color = ['r', 'b', 'y', 'k'] # 颜色集
methods = ('Dynamic', 'Random', 'Nearby', 'other') # 图例说明集
legend_lines = [mpl.lines.Line2D([0], [0], linestyle="none", marker='o', c=color[y]) for y in y_unique]
legend_labels = [methods[y] for y in y_unique]
ax.legend(legend_lines, legend_labels, numpoints=1, title='Method')
3D 图例的添加和2D的相似,主要通过ax.legend()函数实现。当然3d图像的图例要复杂一点,毕竟不是一个平面的图形。
总程序代码
import pickle
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpldef balance_comparison(): # 系统均衡比较函数1h1 = [0.4, 0.3, 0.5]h2 = [0.9, 0.3, 0.1]h3 = [0.2, 0.4, 0.8]fig = plt.figure(figsize=(9, 6)) # 设置图片的大小ax = fig.add_subplot(111, projection='3d')x = np.arange(1, 4, 1)y = np.arange(1, 4, 1)# Construct arrays with the dimensions for the 16 bars.dx = dy = 0.3 # 设置柱长、宽ax.bar3d(3, 3, 0, dx, dy, h1[0], 'b')ax.bar3d(0, 1, 0, dx, dy, h1[1], 'b')ax.bar3d(3, 0, 0, dx, dy, h1[2], 'b')ax.bar3d(3.6, 3, 0, dx, dy, h2[0], 'r')ax.bar3d(0.6, 1, 0, dx, dy, h2[1], 'r')ax.bar3d(3.6, 0, 0, dx, dy, h2[2], 'r')ax.bar3d(3.6, 3.6, 0, dx, dy, h3[0], 'y')ax.bar3d(0.6, 1.6, 0, dx, dy, h3[1], 'y')ax.bar3d(3.6, 0.6, 0, dx, dy, h3[2], 'y')# 设置坐标轴的刻度ax.set_xticks(x)ax.set_xlabel('X')ax.set_yticks(y)ax.set_ylabel('Y')ax.set_zlabel('queuePro')ax.view_init(elev=20, azim=-60)# 将三维的灰色背诵面换成白色ax.w_xaxis.set_pane_color((1.0, 1.0, 1.0, 0.0))ax.w_yaxis.set_pane_color((1.0, 1.0, 1.0, 0.0))ax.w_zaxis.set_pane_color((1.0, 1.0, 1.0, 0.0))y_unique = np.unique(y-1)color = ['r', 'b', 'y', 'k']methods = ('Dynamic', 'Random', 'Nearby', 'other')legend_lines = [mpl.lines.Line2D([0], [0], linestyle="none", marker='o', c=color[y]) for y in y_unique]legend_labels = [methods[y] for y in y_unique]ax.legend(legend_lines, legend_labels, numpoints=1, title='Method')plt.savefig("./figures/BalanceCom.png")plt.show()def main():balance_comparison()if __name__ == '__main__':main()
运行结果
关于其他三维图像
Python绘制更多三维图形的教程请参考其他博文,如https://blog.csdn.net/u013185349/article/details/122618862
Python三维图像的绘制以及相关图例添加(3D图像 - 图例)相关推荐
- Python 三维动画生成 绘制螺旋线
原文链接: Python 三维动画生成 绘制螺旋线 上一篇: Python 三维曲线 下一篇: 英语文章背诵概率 效果 三维绘制曲线 ''' p1 x1,y1,z1 p2 x2,y2,z2 p3 x3 ...
- Python之PIL之绘图:基于Python的PIL库绘制各种图形、添加文字等
Python之PIL之绘图:基于Python的PIL库绘制各种图形.添加文字等 目录 一.绘制各种形状各种案例 1.绘制矩形 2.绘制圆形.弧线形
- python绘制可多角度查看的3d图像
用鼠标拖动可多角度查看3d图像. # Enable interactive rotation of graph %matplotlib notebookimport numpy as np impor ...
- python 三维散点图拟合曲面_python 绘图---2D、3D散点图、折线图、曲面图
python中绘制2D曲线图需要使用到Matplotlib,Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形,通过 Matplo ...
- python鼠标画点连线_使用Matplotlib在Python中使用鼠标在图像上绘制点
我试图用鼠标在图像上绘制点. 问题是:图像出现了,但是当我点击鼠标时,什么也没有绘制出来(即使我点击了几次).在 我的Python版本是python2.7,带有Anaconda和IPython控制台. ...
- PHP 使用GD库生成验证码 在图像上绘制汉字
PHP 并不仅限于创建 HTML 输出, 它也可以创建和处理包括 GIF, PNG, JPEG, WBMP 以及 XPM 在内的多种格式的图像. 更加方便的是,PHP 可以直接将图像数据流输出到浏览器 ...
- python matplotlib绘制 3D图像专题 (三维柱状图、曲面图、散点图、曲线图合集)
python matplotlib 绘制3D图表 文章目录 1. 绘制3D柱状图 2. 绘制3D曲面图 ① 示例1 ② 示例2 3.绘制3D散点图 4. 绘制3D曲线图 ʚʕ̯•͡˔•̯᷅ ...
- python绘制三维曲面图-python中Matplotlib实现绘制3D图的示例代码
Matplotlib 也可以绘制 3D 图像,与二维图像不同的是,绘制三维图像主要通过 mplot3d 模块实现.但是,使用 Matplotlib 绘制三维图像实际上是在二维画布上展示,所以一般绘制三 ...
- python画曲线图例-Python数据分析-Matplotlib图标绘制
Matplotlib介绍 Matplotlib是一个强大的Python绘图和数据可视化的工具包. Matplotlib的主要功能 Matplotlib是python中的一个包,主要用于绘制2D图形(当 ...
最新文章
- c# 文件IO操作 StreamReader StreamWriter Split 使用
- Spring核心--IOCAOP
- office2003/2007/2010如何卸载干净
- C/C++如何传递二维数组?
- GDCM:Dicom文件重复的PCDE测试程序
- 天池 在线编程 布尔表达式求值(栈)
- 13 CO配置-控制-内部订单-定义定单类型
- python判断数据在某个区间
- 数据库 linux 编译,部署mariadb数据库到linux(源码编译安装)
- 用python输出200以内的素数_Python练习题 008:打印101-200之间的所有素数
- 【转载】C#, VB.NET如何将Excel转换为PDF
- 用srvany.exe将程序安装为windows服务的步骤链接
- excel工作簿合并为一个表格
- Vscode python Code Runner中文乱码
- 模拟版图layout能否转数字IC后端实现?
- 伏地魔爱上林黛玉?就没有B站不能组的CP!
- osg学习(四十八)Windows Error #2000
- 基于Linux下的VIC使用(2)Routing部分(Fortran版本)
- ERASOR:解决动态环境下的SLAM建图问题,有效过滤动态物体(ICRA2021)
- CREO:CREO软件之工程图【创建】以及配置(符合国家标准)的简介及其使用方法(图文教程)之详细攻略
热门文章
- 傲游云浏览器开创业界先例 无缝浏览增强用户体验
- 笔记本电脑电池如何校准电量
- ac990网络版会计核算软件(带狗)
- C - Powered Addition
- 千兆车载以太网TSN(时间敏感网络)网络测试?TSN Box为您焕新
- 【数据结构和算法设计】算法篇(11) 概率算法和近似算法
- DocumentBuilderFactory解析xml
- 关于env(safe-area-inset-bottom)的兼容问题
- [人脸活体检测] 论文:Face De-Spoofing: Anti-Spoofing via Noise Modeling
- delimiters