Python三维图像的绘制以及相关图例添加(3D图像 - 图例)

这篇具有很好参考价值的文章主要介绍了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 mpl


def balance_comparison():  # 系统均衡比较函数1

    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')

    # 设置坐标轴的刻度
    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三维图像的绘制以及相关图例添加(3D图像 - 图例)

关于其他三维图像

Python绘制更多三维图形的教程请参考其他博文,如https://blog.csdn.net/u013185349/article/details/122618862文章来源地址https://www.toymoban.com/news/detail-511353.html

到了这里,关于Python三维图像的绘制以及相关图例添加(3D图像 - 图例)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python mpl_toolkits.mplot3d工具包绘制三维图

    在Python中我们可以导入 mplot3d 工具包来绘制三维图。 在 Matplotlib 1.0.0 之前,每个图形只能创建一个 Axes3D ,需要被直接定义为 ax = Axes3D 在 Matplotlib 3.2.0 之前,必须导入 mpl_toolkits.mplot3d 模块将 Projection=\\\'3d\\\' 传递给 Figure.add_subplot 3维坐标系通过将 Projection=\\\'3d\\\' 传递给

    2024年02月12日
    浏览(52)
  • Echart的使用初体验,Echarts的基本使用及语法格式,简单图表绘制和使用及图例添加【学习笔记】

    ECharts 是一个使用 JavaScript 实现的开源可视化库,涵盖各行业图表,满足各种需求。 ECharts 遵循 Apache-2.0 开源协议,免费商用。 ECharts 兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等)及兼容多种设备,可随时随地任性展示。 ECharts 包含了以下特性: 丰富的可视化

    2024年02月04日
    浏览(32)
  • Open3D图像处理功能详解:Python中强大的三维图像库

    Open3D图像处理功能详解:Python中强大的三维图像库 Open3D是一款在Python语言中使用的开源3D图形库,以其强大的功能和易用性而被广泛应用于计算机视觉、机器人技术、虚拟现实等领域。其中,Open3D提供了完善的图像处理工具,使得Python开发者可以便捷地进行三维图像的处理和

    2024年02月12日
    浏览(40)
  • Python遥感图像处理应用篇(二十四):Python绘制遥感图像各波段热力图(相关系数矩阵)

    给多光谱遥感图像各个波段绘制热力图,首先需要计算波段之间的相关系数矩阵,而计算遥感图像波段相关系数矩阵有不同的方法,常用的我们可以采用遥感图像处理软件计算,比如ENVI软件就可以计算相关系数矩阵,使用工具箱中的Statistics工具即可进行多种统计运算。 我们

    2023年04月09日
    浏览(32)
  • Python遥感图像处理应用篇(二十七):Python绘制遥感图像各波段热力图(相关系数矩阵)(续)

    续-https://soderayer.blog.csdn.net/article/details/125757807 上一篇中使用csv文件计算的相关系数热力图,本篇我们直接使用遥感图像来计算图像波段之间的相关系数。 实际上,目前已有的软件,如ENVI就可以直接计算图像波段之间的相关系数,该工具计算的是合成波段之间的相关系数。如

    2023年04月17日
    浏览(32)
  • matlab绘图(三)绘制三维图像

    一、绘制三维曲线  二、绘制三维曲面 1.meshgrid函数  2.mesh和surf函数 1.最基本的绘制三维曲线的函数 —plot3 plot3(x1,y1,z1, 选项 1,x2,y2,z2, 选项 2,…, xn,yn,zn , 选项 n) 其中,每一组 x , y , z 组成一组曲线的坐标参数,选项的定义和 plot 函数相同。当 x 、 y 、 z 是同维向量时,则

    2024年02月01日
    浏览(84)
  • python 之利用plt.legend()添加图例

    plt.legend() 是Matplotlib库中用于添加图例(legend)的函数。图例是用于标识图表中各个数据系列的标签,以便读者可以理解图表中的不同数据含义。通过 plt.legend() ,您可以将图例添加到您创建的图表中,以提高图表的可读性。以下是 plt.legend() 的详细介绍: plt.legend() 可以接受

    2024年02月07日
    浏览(29)
  • python 将多个模型的ROC曲线绘制在一张图里(含图例)

    调用方法时,需要把模型本身(如clf_xx)、模型名字(如GBDT)和对应颜色(如crimson)按照顺序、以列表形式传入函数作为参数。 (1)plt.figure(figsize=(20, 20), dpi=dpin) 在for循环外绘制图片的大体框架。 figsize 控制图片大小, dpin 控制图片的信息量(其实可以理解为清晰度?docume

    2023年04月08日
    浏览(34)
  • Matlab报错pcolor矩阵维度不一致(三维图像绘制)

    首先来说 pcolor 是可以很好的实现三维图像的: 简单来说,原来我们的数据是这样的: 我们需要把数据换成矩阵的形式,像下面这样: 你看,x=1,y=10,对应的z就是1,我们就是要换成这样的矩阵形式。下面说怎么换,以我的例子来说,我的x是50031✖1的矩阵,y是50031✖1的矩阵

    2024年02月05日
    浏览(31)
  • [Python从零到壹] 七十二.图像识别及经典案例篇之OpenGL入门及绘制基本图形和3D图

    十月太忙,还是写一篇吧!祝大家1024节日快乐O(∩_∩)O 欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家

    2024年02月06日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包