本文分享自华为云社区《Plotly绘制3D图形》 ,作者:柠檬味拥抱。

在数据可视化领域,三维图形是一种强大的工具,可以展示数据之间的复杂关系和结构。Python语言拥有丰富的数据可视化库,其中Plotly是一款流行的工具,提供了绘制高质量三维图形的功能。本文将介绍如何使用Python和Plotly来绘制各种类型的3D图形,并给出代码实例。

准备工作

首先,确保你已经安装了Plotly库。你可以使用pip命令来安装:

pip install plotly

接下来,我们将使用Plotly的plotly.graph_objects模块来创建3D图形。我们还将使用numpy库生成一些示例数据。

import plotly.graph_objects as go
import numpy as np

绘制散点图

首先,我们将绘制一个简单的散点图。假设我们有一些三维数据,分别存储在x_datay_dataz_data中。

# 生成示例数据
np.random.seed(42)
n_points = 100
x_data = np.random.rand(n_points)
y_data = np.random.rand(n_points)
z_data = np.random.rand(n_points) # 创建散点图
fig = go.Figure(data=[go.Scatter3d(x=x_data, y=y_data, z=z_data, mode='markers')])
fig.update_layout(scene=dict(xaxis_title='X', yaxis_title='Y', zaxis_title='Z'),
title='3D Scatter Plot')
fig.show()

以上代码将生成一个简单的三维散点图,展示了随机生成的数据点在三维空间中的分布情况。

绘制曲面图

接下来,我们将绘制一个曲面图。假设我们有一个函数f(x, y),我们想要可视化它在三维空间中的表面。

# 定义函数
def f(x, y):
return np.sin(x) * np.cos(y) # 生成网格数据
x_grid = np.linspace(0, 2*np.pi, 50)
y_grid = np.linspace(0, 2*np.pi, 50)
x_grid, y_grid = np.meshgrid(x_grid, y_grid)
z_grid = f(x_grid, y_grid) # 创建曲面图
fig = go.Figure(data=[go.Surface(z=z_grid, x=x_grid, y=y_grid)])
fig.update_layout(scene=dict(xaxis_title='X', yaxis_title='Y', zaxis_title='Z'),
title='3D Surface Plot')
fig.show()

以上代码将生成一个展示了函数表面的三维曲面图。

绘制线框图

最后,我们将绘制一个线框图,展示数据的连续性。

# 生成线框数据
theta = np.linspace(-4*np.pi, 4*np.pi, 100)
z_line = np.linspace(-2, 2, 100)
x_line = z_line * np.sin(theta)
y_line = z_line * np.cos(theta) # 创建线框图
fig = go.Figure(data=[go.Scatter3d(x=x_line, y=y_line, z=z_line, mode='lines')])
fig.update_layout(scene=dict(xaxis_title='X', yaxis_title='Y', zaxis_title='Z'),
title='3D Wireframe Plot')
fig.show()

以上代码将生成一个展示了线框的三维图形。

通过以上示例,我们展示了如何使用Python和Plotly来绘制各种类型的三维图形。你可以根据自己的需求进一步定制这些图形,并探索Plotly库中更多丰富的功能。Happy plotting!

绘制3D条形图

除了散点图、曲面图和线框图之外,我们还可以绘制3D条形图,展示数据之间的差异和关系。

# 生成示例数据
categories = ['A', 'B', 'C', 'D']
values = np.random.randint(1, 10, size=(len(categories), len(categories)))
x_bar, y_bar = np.meshgrid(np.arange(len(categories)), np.arange(len(categories)))
x_bar = x_bar.flatten()
y_bar = y_bar.flatten()
z_bar = np.zeros_like(x_bar) # 设置条形图的高度
bar_heights = values.flatten() # 创建3D条形图
fig = go.Figure(data=[go.Bar3d(x=x_bar, y=y_bar, z=z_bar, dx=1, dy=1, dz=bar_heights)])
fig.update_layout(scene=dict(xaxis_title='X', yaxis_title='Y', zaxis_title='Z'),
title='3D Bar Chart')
fig.show()

以上代码将生成一个展示了各种类别和值之间关系的三维条形图。

自定义图形样式

Plotly提供了丰富的自定义选项,可以调整图形的样式、布局和外观。你可以根据需要修改图形的颜色、线型、标签等属性,以满足特定的可视化需求。

# 自定义图形样式
fig.update_traces(marker=dict(color='rgb(255, 127, 14)', size=10),
selector=dict(mode='markers'))
fig.update_layout(scene=dict(xaxis=dict(backgroundcolor="rgb(200, 200, 230)",
gridcolor="white",
showbackground=True,
zerolinecolor="white"),
yaxis=dict(backgroundcolor="rgb(230, 200,230)",
gridcolor="white",
showbackground=True,
zerolinecolor="white"),
zaxis=dict(backgroundcolor="rgb(230, 230,200)",
gridcolor="white",
showbackground=True,
zerolinecolor="white")),
title='Customized 3D Scatter Plot')
fig.show()

交互式三维图形

Plotly还支持创建交互式的三维图形,让用户可以通过鼠标交互来探索数据。下面是一个交互式散点图的示例:

# 创建交互式散点图
fig = go.Figure(data=[go.Scatter3d(x=x_data, y=y_data, z=z_data, mode='markers')])
fig.update_layout(scene=dict(xaxis_title='X', yaxis_title='Y', zaxis_title='Z'),
title='Interactive 3D Scatter Plot')
fig.show()

通过将鼠标悬停在数据点上,用户可以查看每个数据点的具体数值,从而更深入地了解数据。

导出图形

一旦你创建了满意的三维图形,你可以将其导出为静态图片或交互式HTML文件,方便分享和展示。Plotly提供了方便的导出功能,让你可以轻松地保存图形到本地文件。

# 将图形导出为静态图片
fig.write_image("3d_plot.png") # 将图形导出为交互式HTML文件
fig.write_html("3d_plot.html")

探索更多功能

除了本文介绍的功能之外,Plotly还提供了许多其他强大的功能,如动画、子图、相机控制等,可以进一步增强和定制你的三维图形。你可以通过查阅官方文档或参考在线教程来深入了解这些功能,并将其应用到你的项目中。

总结

通过本文,我们学习了如何使用Python和Plotly库绘制各种类型的三维图形,包括散点图、曲面图、线框图和条形图。我们了解了绘制每种图形所需的基本步骤和代码示例,并探索了如何自定义图形样式、创建交互式图形以及将图形导出为静态图片或交互式HTML文件。通过这些技巧和功能,我们可以轻松地在数据可视化领域创建出具有吸引力和实用性的三维图形,从而更好地理解和分析数据。无论是在科学研究、工程应用还是数据分析中,三维图形都是一种强大的工具,帮助我们发现数据之间的模式和关系,以及展示研究成果和洞见。通过不断探索和应用Python和Plotly库的功能,我们可以进一步提升数据可视化的效果和效率,为我们的工作和项目带来更多的价值和成就。

点击关注,第一时间了解华为云新鲜技术~

如何使用Python和Plotly绘制3D图形的更多相关文章

  1. Python 使用 matplotlib绘制3D图形

    3D图形在数据分析.数据建模.图形和图像处理等领域中都有着广泛的应用,下面将给大家介绍一下如何在Python中使用 matplotlib进行3D图形的绘制,包括3D散点.3D表面.3D轮廓.3D直线( ...

  2. Python绘制3D图形

    来自:https://www.jb51.net/article/139349.htm 3D图形在数据分析.数据建模.图形和图像处理等领域中都有着广泛的应用,下面将给大家介绍一下如何使用python进行 ...

  3. Python plot_surface(Axes3D)方法:绘制3D图形

    3D 图形需要的数据与等高线图基本相同:X.Y 数据决定坐标点,Z 轴数据决定 X.Y 坐标点对应的高度.与等高线图使用等高线来代表高度不同,3D 图形将会以更直观的形式来表示高度. 为了绘制 3D ...

  4. 使用OpenGL ES绘制3D图形

    如果应用定义的顶点不在同一个平面上,并且使用三角形把合适的顶点连接起来,就可以绘制出3D图形了. 使用OpenGL  ES绘制3D图形的方法与绘制2D图形的步骤大致相同,只是绘制3D图形需要定义更多的 ...

  5. Python使用plotly绘制数据图表的方法

    转载:http://www.jb51.net/article/118936.htm 本篇文章主要介绍了Python使用plotly绘制数据图表的方法,实例分析了plotly绘制的技巧. 导语:使用 p ...

  6. cocos2d-x中绘制3D图形--3D ToolKit for cocos2dx实现原理

    首先:了解具体情况请看这里:https://github.com/wantnon2/3DToolKit-for-cocos2dx 在看代码之前,最好还是先把项目git下来执行一下demoproject ...

  7. Python turtle库绘制简单图形

    一.简介 Python中的turtle库是一个直观有趣的图形绘制函数库.turtle库绘制图形有一个基本框架:一个小海龟在坐标系中爬行,其爬行轨迹形成了绘制图形. 二.简单的图形列举 1.绘制4个不同 ...

  8. python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)

    插图工具使用Python内置的turtle模块,为什么叫这个turtle乌龟这个名字呢,可以这样理解,创建一个乌龟,乌龟能前进.后退.左转.右转,乌龟的尾巴朝下,它移动时就会画一条线.并且为了增加乌龟 ...

  9. Mathematica——绘制3D图形

    Plot3D Plot3D[ + y, {x, -, }, {y, -, }] ListPointPlot3D 绘制点集 ListPointPlot3D[{{, , }, {, , }}, Color ...

  10. Python画各种 3D 图形Matplotlib库

    回顾 2D 作图 用赛贝尔曲线作 2d 图.此图是用基于 Matplotlib 的 Path 通过赛贝尔曲线实现的,有对赛贝尔曲线感兴趣的朋友们可以去学习学习,在 matplotlib 中,figur ...

随机推荐

  1. 上新啦KIT

    HMS Core上新啦!分析服务区服分析全新上线:机器学习服务OCR新增手写识别服务:3D建模续扫能力更新:视频编辑服务支持自定义上传素材--更多#HMS Core#能力可点击网页链接了解. 了解更多 ...

  2. DevEco Studio 3.1差异化构建打包,提升多版本应用开发效率

     原文:https://mp.weixin.qq.com/s/8XtgZ-k0mGXCjKHfSXFoOg,点击链接查看更多技术内容.     HUAWEI DevEco Studio是开发Harmo ...

  3. Linux之bond和team

    一.bond 和 team 区别 bond只能是双网卡绑定,team不需要手动加载相应内核模块和有更强的拓展性,最高可以绑定8块网卡. 二.模式 bond模式 (1)mode=0(balance-rr ...

  4. HarmonyOS NEXT应用开发之使用AKI轻松实现跨语言调用

    介绍 针对JS与C/C++跨语言访问场景,NAPI使用比较繁琐.而AKI提供了极简语法糖使用方式,一行代码完成JS与C/C++的无障碍跨语言互调,使用方便.本示例将介绍使用AKI编写C++跨线程调用J ...

  5. 一文详解用eBPF观测HTTP

    简介: 随着eBPF推出,由于具有高性能.高扩展.安全性等优势,目前已经在网络.安全.可观察等领域广泛应用,同时也诞生了许多优秀的开源项目,如Cilium.Pixie等,而iLogtail 作为阿里内 ...

  6. 实时数仓Hologres首次走进阿里淘特双11

    ​简介:这是淘特在阿里巴巴参与的第二个双11大促,大促期间累计超过上千万消费者在此买到心仪的商品,数百万家商家因为淘特而变得不同,未来,淘特也将会继续更好的服务于下沉市场,让惠民走近千万家. 2021 ...

  7. 超详攻略!Databricks 数据洞察 - 企业级全托管 Spark 大数据分析平台及案例分析

    简介: 5分钟读懂 Databricks 数据洞察 ~ 更多详细信息可登录 Databricks 数据洞察 产品链接:https://www.aliyun.com/product/bigdata/sp ...

  8. 项目实战总结以及接入U-APM

    ​简介: 导致 App 性能低下的原因有很多,除去设备硬件和软件的外部因素,其中大部分是开发者错误地使用线.系统函数.编程范式.数据结构等导致的.即便是较有经验的程序员,也很难在开发时就能避免所有导致 ...

  9. 干掉讨厌的 CPU 限流,让容器跑得更快

    ​简介: 让人讨厌的 CPU 限流影响容器运行,有时人们不得不牺牲容器部署密度来避免 CPU 限流出现.本文介绍的 CPU Burst 技术可以帮助您既能保证容器运行服务质量,又不降低容器部署密度.文 ...

  10. [K8s] Kubernetes核心基础概念 Node, Pod, ReplicaSet, Deployment, Service, Ingress, ConfigMap

    Node 即 Kubernetes 集群中的一台工作机器,物理机或者虚拟机. https://kubernetes.io/zh/docs/concepts/architecture/nodes/ 通常 ...