python - 3D图表绘制

Pyecharts 和 3D 图表绘制

Pyecharts 是一个用于生成各种图表的 Python 库,它基于 Echarts,支持大量的图表类型,非常适合用于数据分析和可视化。Pyecharts 主要优点是易于使用,可以直接在 Python 环境中绘制富有交互性的图表,并且可以轻松地嵌入到网页中。

常见的 3D 图表类型:
  1. 3D 散点图(Scatter3D)
  2. 3D 柱状图(Bar3D)
  3. 3D 曲面图(Surface3D)
  4. 3D 线框图(Line3D)



安装 Pyecharts

Pyecharts 可以通过 pip 安装:

pip install pyecharts



1. 3D 散点图(Scatter3D)

代码示例
from pyecharts import options as opts
from pyecharts.charts import Scatter3D
from pyecharts.faker import Fakerdata = [list(z) for z in zip(Faker.values(), Faker.values(), Faker.values())]
scatter3d = Scatter3D()
scatter3d.add("", data)
scatter3d.set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=200),title_opts=opts.TitleOpts(title="3D Scatter Plot Example")
)
scatter3d.render()
解释说明

上面的代码生成一个 3D 散点图,使用 Faker.values() 生成假数据。图表设置了视觉映射和标题。render() 函数用于在文件加中生成3D图表的html文件,文件默认保存在代码文件同目录下。
在这里插入图片描述

常见问题及解决方案
  1. 问题: 图表不显示在 Jupyter Notebook。

    • 解决方案: 若要图表显示在Jupyter,可使用 render_notebook() 而非 render()
  2. 问题: 数据无法正确显示。

    • 解决方案: 检查数据格式是否符合图表所需的格式。
  3. 问题: 修改图表颜色无效。

    • 解决方案: 通过 opts.ItemStyleOpts 设置项来自定义颜色和样式。
  4. 问题: 图表标题未显示。

    • 解决方案: 确保 title_opts=opts.TitleOpts(title="Your Title") 已被正确设置。
  5. 问题: 如何保存图表为图片或 HTML 文件。

    • 解决方案: 使用 render('your_filename.html') 保存为 HTML,或使用 snapshot 插件保存为图片。



2. 3D 柱状图(Bar3D)

代码示例
from pyecharts import options as opts
from pyecharts.charts import Bar3D
from pyecharts.faker import Fakervalues = Faker.values()
data_length = len(values)
data = [(i, j, values[i % data_length]) for i in range(10) for j in range(10)]
bar3d = Bar3D()
bar3d.add("",data,xaxis3d_opts=opts.Axis3DOpts(type_="category", data=Faker.clock),yaxis3d_opts=opts.Axis3DOpts(type_="category", data=Faker.week),zaxis3d_opts=opts.Axis3DOpts(type_="value")
)
bar3d.set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=50),title_opts=opts.TitleOpts(title="3D Bar Chart Example")
)
bar3d.render()
解释说明

这段代码创建了一个 3D 柱状图,使用 Faker 库生成数据。X 轴和 Y 轴设置为类别轴,Z 轴为值轴。visualmap_opts 用于调整视觉映射的最大值属性,有助于在图表中显示不同的颜色深度。render() 函数用于在文件加中生成3D图表的html文件。
在这里插入图片描述

常见问题及解决方案
  1. 问题: 如何调整柱子的宽度。

    • 解决方案: 使用 opts.Grid3DOpts(width=200, depth=100)set_global_opts 中设置。
  2. 问题: 柱状图中的柱子重叠或难以区分。

    • 解决方案: 调整柱子的宽度和深度,以及图表的角度来增强可读性。这可以通过设置 Bar3DOpts 中的 widthdepth 参数来实现,同时也可以调整 Grid3DOptsrotate_angleis_rotate 选项来优化视角。
  3. 问题: 柱状图的标签重叠,看起来凌乱。

    • 解决方案: 调整标签的显示方式或选择不显示标签。可以使用 label_opts=opts.LabelOpts(is_show=False) 禁用标签,或调整 label_opts 中的 positionformatter 属性来改善标签的布局和内容。
  4. 问题: 数据更新后,图表不刷新。

    • 解决方案: 确保在数据更新后重新渲染图表。在 Jupyter Notebook 中使用 render() 重新渲染图表,确保数据的更新能够即时反映在图表上。
  5. 问题: 3D 柱状图在不同的浏览器或设备上显示效果不一致。

    • 解决方案: 设置图表的初始配置项 InitOpts,例如设定具体的宽度和高度。例如:init_opts=opts.InitOpts(width="1000px", height="800px"),以确保在不同设备和浏览器上具有一致的表现。
  6. 问题: 柱状图的颜色太单一或与期望不符。

    • 解决方案: 使用 visualmap_opts 来自定义柱子的颜色范围和渐变效果。可以设置颜色的最小值、最大值以及颜色列表,来创建更具吸引力和信息性的颜色编码。



3. 3D 曲面图(Surface3D)

代码示例
import math
from pyecharts import options as opts
from pyecharts.charts import Surface3Ddef surface3d_data():for t in range(-30, 30, 1):y = t / 10for s in range(-30, 30, 1):x = s / 10z = math.sin(x ** 2 + y ** 2) * x / 3.14yield [x, y, z]data = list(surface3d_data())
surface3d = Surface3D()
surface3d.add("", data)
surface3d.set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=1),title_opts=opts.TitleOpts(title="3D Surface Plot Example")
)
surface3d.render()
解释说明

这段代码展示了如何使用 Surface3D 创建一个 3D 曲面图。函数 surface3d_data() 生成 x, y, z 坐标点,用于构建三维曲面。图表使用 VisualMapOpts 来调整颜色映射。render() 函数用于在文件加中生成3D图表的html文件。
在这里插入图片描述

常见问题及解决方案
  1. 问题: 如何更改曲面图的颜色梯度。

    • 解决方案: 通过修改 visualmap_opts 中的 min_max_ 值,调整颜色范围。
  2. 问题: 曲面图渲染后看起来不平滑或块状。

    • 解决方案: 增加数据点的密度。在生成数据时,减小循环中的步长,这样可以生成更密集的网格点,从而使曲面看起来更平滑。例如,将步长从 1 改为 0.5 或更小。
  3. 问题: 曲面图的某些部分超出了图表的边界。

    • 解决方案: 调整视觉映射的最大值和最小值,以确保所有数据点都位于视觉映射的范围内。可以在 VisualMapOpts 中设置 min_max_ 属性。
  4. 问题: 曲面图的颜色和期望的不一致。

    • 解决方案: 修改 VisualMapOpts 中的颜色配置。可以设置 color 属性来定义颜色渐变,或使用 range_color 来指定颜色范围。
  5. 问题: 如何显示曲面下方的网格线?

    • 解决方案: 在 Grid3DOpts 中设置 grid3d_opts=opts.Grid3DOpts(is_show=True)。此选项可以控制是否显示三维网格线,有助于更好地理解数据的布局。
  6. 问题: 生成的3D曲面图在浏览器中响应缓慢或卡顿。

    • 解决方案: 优化数据点数量,避免过度密集的数据点集。此外,可以调整 render_notebook() 中的 chart_idrenderer 参数,选择一个更高效的渲染方式,比如使用 WebGL。



4. 3D 线框图(Line3D)

代码示例
from pyecharts import options as opts
from pyecharts.charts import Line3D
from pyecharts.faker import Fakervalues = Faker.values()
data_length = len(values)
data = [(i, j, values[i % data_length]) for i in range(10) for j in range(10)]
line3d = Line3D()
line3d.add("",data,xaxis3d_opts=opts.Axis3DOpts(type_="category", data=Faker.clock),yaxis3d_opts=opts.Axis3DOpts(type_="category", data=Faker.week),zaxis3d_opts=opts.Axis3DOpts(type_="value")
)
line3d.set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=50),title_opts=opts.TitleOpts(title="3D Line Chart Example")
)
line3d.render()
解释说明

这段代码创建了一个 3D 线框图,同样利用 Faker 生成数据。此图展示了如何在三维空间中通过线连接点,x、y、z 轴分别为类别和值轴。render() 函数用于在文件加中生成3D图表的html文件。render() 函数用于在文件加中生成3D图表的html文件。
在这里插入图片描述

常见问题及解决方案
  1. 问题: 3D 线框图中线段显示不清晰或太细。

    • 解决方案: 可以通过设置 line_style_opts 来调整线条的宽度和颜色。例如:line_style_opts=opts.LineStyleOpts(width=4, color='#ff0000') 使线条更加粗和明显。
  2. 问题: 如何控制图表的旋转角度或视角。

    • 解决方案: 在 set_global_opts 方法中使用 grid3d_opts 来设置初始旋转角度和视角,例如:grid3d_opts=opts.Grid3DOpts(rotate_speed=10, is_rotate=True)
  3. 问题: 3D 线框图在不同的显示设备上大小不一致。

    • 解决方案: 使用 init_opts 在创建图表时设置图表的宽度和高度,如 init_opts=opts.InitOpts(width="1000px", height="600px"),确保图表在不同设备上具有相同的显示效果。
  4. 问题: 数据点过多导致图表加载缓慢或浏览器崩溃。

    • 解决方案: 尽量减少数据点的数量或使用数据采样。也可以考虑分批次动态加载数据,或者在前端使用异步加载的方式减轻单次渲染的压力。
  5. 问题: 如何添加标签或注释到特定的数据点。

    • 解决方案: 可以使用 label_opts 来设置数据点的标签显示,例如:add("", data, label_opts=opts.LabelOpts(is_show=True)),这样可以在每个数据点旁边显示相应的标签。

更多问题咨询

Cos机器人

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/5877.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ES练习项目-酒店搜索

目录 1 需求分析2 酒店搜索和分页2.1 请求和响应分析2.2 定义实体类,接收请求参数的JSON对象2.3 编写controller,接收页面的请求2.4 编写业务实现,利用RestHighLevelClient实现搜索、分页 3. 酒店结果过滤3.1 请求和响应分析3.2 修改请求参数…

结合创新!频域+时间序列,预测误差降低64.7%

频域时间序列不仅能提供更丰富的信息,还能提高模型性能和预测准确性。对于论文er来说,是个可发挥空间大、可挖掘创新点多的研究方向。 具体来说: 通过将复杂的时间序列数据转换成简单的频率成分,我们可以更容易地捕捉到数据的周期…

【人工智能基础】逻辑回归实验分析

实验环境:anaconda、jutpyter Notebook 实验使用的库:numpy、matplotlib 一、逻辑回归 逻辑回归是一个常用于二分类的分类模型。本质是:假设数据服从这个分布,然后使用极大似然估计做参数的估计。 二、实验准备 引入库、预设值…

Sam Altman:那些我希望有人能早点告诉我的事

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,所以创建了“AI信息Gap”这个公众号,专注于分享AI全维度知识…

【跟我学RISC-V】(一)认识RISC-V指令集并搭建实验环境

写在前面 现在计算机的体系架构正是发展得如火如荼的时候,占领桌面端市场的x86架构、占领移动端市场的arm架构、在服务器市场仍有一定地位的mips架构、国产自研的指令集loongarch架构、还有我现在要讲到的新型开源开放的RISC-V指令集架构。 我先说一说我的学习经历…

初始计算机网络

TCP/IP TCP/IP模型 TCP/IP网络模型:对于不同设备之间的通信,就需要网络通信,而设备是多样性的,所以要兼容多种多样的设备,就协商出了一套通用的网络协议。 TCP/IP分层 这个网络协议是分层的,每一层都有…

【MATLAB】GUI初步设计

MATLAB界面设计 前言一、基本步骤1.1 创建GUI文件1.2 界面设计 总结 前言 为了完成图像处理的作业,简直就是生活不易啊 找到一个很棒的教学视频 基于MATLAB的GUI界面设计流程讲解 一、基本步骤 1.1 创建GUI文件 由于在写博文之前我已经创建好文件了,…

文件批量高效管理,批量将PDF类型文件移动到指定文件夹里,实现文件高效管理

文件的管理与整理成为了我们生活中不可或缺的一部分。面对堆积如山的PDF文件,你是否也曾感到手足无措、焦头烂额?现在,有了我们的批量文件管理工具,PDF文件的管理将变得前所未有的高效与简单! 首先,我们要…

拆单算法交易(Algorithmic Trading)

TWAP TWAP交易时间加权平均价格Time Weighted Average Price 模型,是把一个母单的数量平均地分配到一个交易时段上。该模型将交易时间进行均匀分割,并在每个分割节点上将拆分的订单进行提交。例如,可以将某个交易日的交易时间平均分为N 段&am…

compose调用系统分享功能分享图片文件

compose调用系统分享功能图片文件 简介UI界面提供给外部程序的文件访问权限创建FileProvider设置共享文件夹 通用分享工具虚拟机验证结果参考 本系列用于新人安卓基础入门学习笔记,有任何不同的见解欢迎留言 运行环境 jdk17 andriod 34 compose material3 简介 本案…

JavaEE_操作系统之进程(计算机体系,,指令,进程的概念、组成、特性、PCB)

一、冯诺依曼体系(Von Neumann Architecture) 现代的计算机, 大多遵守冯诺依曼体系结构 CPU 中央处理器: 进行算术运算和逻辑判断.存储器: 分为外存和内存, 用于存储数据(使用二进制方式存储)输入设备: 用户给计算机发号施令的设备.输出设备: 计算机个…

基于php+mysql+html超市商品管理系统(含论文)

博主介绍: 大家好,本人精通Java、Python、Php、C#、C、C编程语言,同时也熟练掌握微信小程序、Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…

【数据结构-之八大排序(下),冒泡排序,快速排序,挖坑法,归并排序】

🌈个人主页:努力学编程’ ⛅个人推荐:基于java提供的ArrayList实现的扑克牌游戏 |C贪吃蛇详解 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 …

eve 导入linux

mkdir /opt/unetlab/addons/qemu/linux-centos7 cd /opt/unetlab/addons/qemu/linux-centos7 上传hda.qcow2 /opt/unetlab/wrappers/unl_wrapper -a fixpermissions Linux images - (eve-ng.net) Due to very high demand of this section and problems with how to crea…

【车载开发系列】MCAL基本概念

【车载开发系列】MCAL基本概念 【车载开发系列】MCAL基本概念 【车载开发系列】MCAL基本概念一. BSW与MCAL1)BSW-服务层2)BSW-ECU抽象层3)MCAL驱动层 二. MCAL基本概念三. MCAL组成1)PORT2)DIO3)ADC4&#…

阿里云开源大模型开发环境搭建

ModelScope是阿里云通义千问开源的大模型开发者社区,本文主要描述AI大模型开发环境的搭建。 如上所示,安装ModelScope大模型基础库开发框架的命令行参数,使用清华大学提供的镜像地址 如上所示,在JetBrains PyCharm的项目工程终端控…

机器人正反向运动学(FK和IK)

绕第一个顶点可以沿Z轴转动,角度用alpha表示 绕第二个点沿X轴转动,角度为Beta 第三个点沿X轴转动,记作gama 这三个点构成姿态(pose) 我们记第一个点为P0,画出它的本地坐标系,和世界坐标系一样红…

SpringCloud知识点梳理

1. Spring Cloud 综述 1.1 Spring Cloud 是什么 [百度百科]Spring Cloud是⼀系列框架的有序集合。它利⽤Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中⼼、消息总线、负载均衡、断路器、数据监控等,都可以⽤ Spring Boot的开发⻛格…

(C语言)文件操作与函数,超详解

目录 1. 文件 1.1 为什么使用文件? 1.2 什么是文件? 1.2.1 程序文件 1.2.2 数据文件 1.3 文件名 1.4 二进制文件和文本文件 2. 文件的打开和关闭 2.1 流和标准流 2.1.1 流 2.1.2 标准流 2.2 文件指针 2.3 文件的打开和关闭 3. 文件的顺序…

Go Web 开发【Gin 框架快速开发】

1、Gin Web 快速开发 1.1、环境准备 1.1.1、导入 gin 依赖 这里就叫 gin 依赖了,在 Goland 命令行中输入下面的命令: go get -u github.com/gin-gonic/gin 1.1.2、设置代理 如果下载失败,最好设置一下代理,在 cmd 命令行中输…