Python数据分析NumPy和pandas(二十七、数据可视化 matplotlib API 入门)

数据可视化或者数据绘图是数据分析中最重要的任务之一,是数据探索过程的一部分,数据可视化可以帮助我们识别异常值、识别出需要的数据转换以及为模型生成提供思考依据。对于Web开发人员,构建基于Web的数据可视化显示也是一种重要的方式。Python 有许多用于制作静态或动态可视化的附加库,我主要学习的是 matplotlib库 以及基于它构建的库。

matplotlib 是一个桌面绘图包,旨在创建适合发布的绘图和图形。该项目由 John Hunter 于 2002 年启动,目的是在 Python 中启用类似 MATLAB 的绘图界面。matplotlib 和 IPython 社区合作简化了 IPython shell(现在是 Jupyter notebook)的交互式绘图。matplotlib 支持所有操作系统上的各种 GUI 后端,并且可以将可视化导出为所有常见的矢量和光栅图形格式(PDF、SVG、JPG、PNG、BMP、GIF 等)。

随着时间的推移,matplotlib 催生了许多用于数据可视化的附加工具包,这些工具包使用 matplotlib 进行底层绘图。其中之一是 seaborn,seaborn库也经常用。可以通过Jupyter notebook来演示示例代码和输出绘图。要使用Jupyter notebook我们可以通过vs code的扩展商店安装它,如下图所示:

02f141db305546759e34ea11845e4c74.png

安装之后就可以直接使用了,编码方式和输出方式相比于用编辑器要简单些,可以动手试试。我还是沿用编辑器来做代码示例。

对于 matplotlib 库,我们使用以下导入约定:import matplotlib.pyplot as plt

下面我们先创建一个简单的绘图看看:

import numpy as np
import pandas as pd
import matplotlib.pyplot as pltdata = np.arange(10)
plt.plot(data)
plt.show()

生成如下图形:

223690e633b546b8a12b327657680290.png

如果想要自定义图形展示的外观等细节,我们需要学习一些matplotlib API的知识。当然要学习matplotlib的高级功能,可以查阅它的官方文档。

一、Figures 和 Subplots

用 matplotlib 绘制图形,实在 Figure 对象的图窗中进行的。我们可以使用 plt.figure 创建一个新图窗:

import matplotlib.pyplot as pltfig = plt.figure()

plt.figure 有很多参数选项,如果要把图形保存到磁盘,可以用 figsize 参数设置图形的大小和纵横比。不能使用空白数字制作绘图,必须使用 add_subplot 创建一个或多个子图:

import matplotlib.pyplot as pltfig = plt.figure()
ax1 = fig.add_subplot(2, 2, 1)

fig.add_subplot(2, 2, 1)这行代码表示该图有 2 × 2(总共最多四个)子图,并且我们选择四个子图中的第一个(从 1 开始编号)。如果我们创建接下来的两个子图,则最终会得到一个如下所示的可视化效果:

import matplotlib.pyplot as pltfig = plt.figure()
ax1 = fig.add_subplot(2, 2, 1)
ax2 = fig.add_subplot(2, 2, 2)
ax3 = fig.add_subplot(2, 2, 3)plt.show()

5c88c845df4f456da9a8bb55b83686a9.png

这些绘图轴对象(如上面的ax1、ax2、ax3)具有创建不同类型绘图的各种方法,最好使用他们的方法来绘制图像而不是使用 plt.plot 等最顶级的绘图函数。例如,我们可以使用轴对象的 plot 方法制作线图如下:

import numpy as np
import matplotlib.pyplot as pltfig = plt.figure()
ax1 = fig.add_subplot(2, 2, 1)
ax2 = fig.add_subplot(2, 2, 2)
ax3 = fig.add_subplot(2, 2, 3)
ax3.plot(np.random.standard_normal(50).cumsum(), color="black", linestyle="dashed")plt.show()

8c5ac742f96c4a798c7591ebf229e86a.png

color="black", linestyle="dashed"参数选项指示 matplotlib 绘制一条黑色虚线。fig.add_subplot 返回的对象是 AxesSubplot 对象。您可以通过调用每个 AxesSubplot 对象的实例方法在其他空子图上绘制图形:

import numpy as np
import pandas as pd
import matplotlib.pyplot as pltfig = plt.figure()
ax1 = fig.add_subplot(2, 2, 1)
ax2 = fig.add_subplot(2, 2, 2)
ax3 = fig.add_subplot(2, 2, 3)# plot绘制曲线图
ax3.plot(np.random.standard_normal(50).cumsum(), color="black", linestyle="dashed")
# hist绘制直方图
ax1.hist(np.random.standard_normal(100), bins=20, color="black", alpha=0.3)
# scatter绘制散点图
ax2.scatter(np.arange(30), np.arange(30) + 3 * np.random.standard_normal(30))plt.show()

 94f521db1b4a4b10af3433ce41d72db7.png

参数选项 alpha=0.3 设置图形的透明度。我们可以查看 matplotlib 文档,了解所有的绘图类型。

为了更方便地创建子图网格,matplotlib 有一个 plt.subplots 方法,该方法创建一个新图形并返回一个包含创建的子图对象的 NumPy 数组:

import numpy as np
import pandas as pd
import matplotlib.pyplot as pltfig, axes = plt.subplots(2, 3)
print(axes)plt.show()

print(axes)输出:

[[<Axes: > <Axes: > <Axes: >] 
 [<Axes: > <Axes: > <Axes: >]]

表示生成了6个子图对象,这6个子图对象2行3列排列。输出如下图:

4ca0c69066b34aa0b56444c2567f6458.png

然后,可以像二维数组一样对 axes 数组进行索引,例如:例如,axes[0, 1] 引用第一行中间的子图。还可以分别使用 sharex 和 sharey 指示子图应具有相同的 x 轴或 y 轴。当我们比较相同尺度的数据时,这可能很有用;否则,matplotlib 会独立自动缩放绘图限制。matplotlib.pyplot.subplots 方法的参数选项见下图列表:

19990d90fbda46c2b5a6c5035d360f3f.png

 二、调整子图周围的间距

默认情况下,matplotlib 在子图的外部和子图之间的间距中保留一定量的填充。此间距都是相对于绘图的高度和宽度指定的,因此,如果您以编程方式或使用 GUI 窗口手动调整绘图大小,绘图将动态调整自身。您可以使用 subplots_adjust 方法对 Figure 对象更改间距:

subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)

wspace 和 hspace 分别控制图形宽度和图形高度的百分比,以用作子图之间的间距。下面是一个代码小示例,将间距一直缩小到零:

import numpy as np
import pandas as pd
import matplotlib.pyplot as pltfig, axes = plt.subplots(2, 2, sharex=True, sharey=True)
for i in range(2):for j in range(2):axes[i, j].hist(np.random.standard_normal(500), bins=50, color="black", alpha=0.5)
fig.subplots_adjust(wspace=0, hspace=0)plt.show()

cbcf19424e45441785f1164921e9cae5.png

上面图形中轴标签重叠了。matplotlib 不会检查标签是否重叠,因此在这种情况下,需要通过指定显式刻度位置和刻度标签来修复标签(在后面的“刻度、标签和图例”部分中学习如何执行此操作)。

三、颜色、标记和线条样式

matplotlib 的绘制线图函数 plot() 接受 x 和 y 坐标数组以及可选的颜色样式。例如,要用绿色破折号绘制 x 与 y 的关系,可以执行:ax.plot(x, y, linestyle="--", color="green")

matplotlib 提供了许多颜色名称,但是我们也可以通过指定颜色的十六进制代码(例如,“#CECECE”)来使用光谱上的任何颜色。我们可以通过查看官方文档来查询 plt.plot 支持的线条样式。

由于 matplotlib 的 plot 函数创建一个连续的线图,因此有时不清楚点的位置,我们可以用标记突出显示某些数据点:

import numpy as np
import matplotlib.pyplot as pltfig = plt.figure()
ax = fig.add_subplot()
ax.plot(np.random.standard_normal(30).cumsum(), color="black", linestyle="dashed", marker="o")plt.show()

1c30558b326d4d93b205fc624120dd10.png

对于线图,我们注意到默认情况下,后续点是线性插值的。这可以通过 drawstyle 参数选项进行更改:

import numpy as np
import pandas as pd
import matplotlib.pyplot as pltfig = plt.figure()
ax = fig.add_subplot()
data = np.random.standard_normal(30).cumsum()
ax.plot(data, color="black", linestyle="dashed", label="Default")
ax.plot(data, color="black", linestyle="dashed", drawstyle="steps-post", label="steps-post")
ax.legend()plt.show()

在这里,由于我们将标签参数传递给了 plot,因此我们能够创建一个 plot legend 来使用 ax.legend 标识每一行。我在 “Ticks, Labels, and Legends” 中详细讨论了图例。 81ed86d2376c435badf0b12c56c1e85b.png

在这里,我们将标签参数传递给了 plot,因此我们能够创建一个 plot.legend 来使用 ax.legend 标识每一行。注意,无论在绘制数据时是否传递了标签选项,必须调用 ax.legend 来创建图例。

四、刻度、标签和图例

大多数类型的绘图装饰都可以通过 matplotlib axes 对象上的方法访问。这包括 xlim、xticks 和 xticklabels 等方法。它们分别控制绘图范围、刻度位置和刻度标签。它们可以通过两种方式使用:

不带参数的调用返回当前参数值(例如,ax.xlim() 返回当前 x 轴绘图范围)

带参数调用 设置参数值(例如,ax.xlim([0, 10])将 x 轴范围设置为 0 到 10)

所有这些方法都作用于活动或最近创建的 AxesSubplot。subplot 对象本身都有这几个方法的get和set方法,例如:对于 xlim,是 ax.get_xlim 和 ax.set_xlim。

设置标题、轴标签、刻度和刻度标签。我们用代码示例来学习,创建一个随机游走绘图。

import numpy as np
import pandas as pd
import matplotlib.pyplot as pltfig, ax = plt.subplots()
ax.plot(np.random.standard_normal(1000).cumsum());
plt.show()

以上代码随机生成1000个随机数的累积和,来表示随机游走的每一步。输出绘图如下:

8ac76e43004f4a1b8b019576f06e5da3.png

要更改 x 轴刻度,最简单的方法是使用 set_xticks 和 set_xticklabels。前者指示 matplotlib 沿数据范围将刻度线放置在何处;默认情况下,这些位置也将成为标签。但是我们可以使用 set_xticklabels 将任何其他值设置为标签。如下代码示例:

import numpy as np
import matplotlib.pyplot as pltfig, ax = plt.subplots()
ax.plot(np.random.standard_normal(1000).cumsum());# 设置刻度
ticks = ax.set_xticks([0, 250, 500, 750, 1000])
# rotation 参数将 x 刻度标签设置为旋转 30 度
labels = ax.set_xticklabels(["one", "two", "three", "four", "five"], rotation=30, fontsize=8)
# set_xlabel 为 x 轴命名
ax.set_xlabel("Stages")
# set_title 为子图命名
ax.set_title("我的第一个 matplotlib plot")plt.show()

e0aad48546c0439eb21c21f4f318d921.png

修改 y 轴由相同的过程组成,在此示例中,用 y 代替 x。axes 类有一个 set 方法,允许批量设置绘图属性。前面的例子中,我们也可以这样写:

ax.set(title="我的第一个 matplotlib plot", xlabel="Stages") 

添加图例

图例是识别绘制的图形中情节元素的另一个关键元素。有几种方法可以添加,最简单的是在添加每个 plot 时传递 label 参数:

import numpy as np
import matplotlib.pyplot as pltfig, ax = plt.subplots()ax.plot(np.random.randn(1000).cumsum(), color="black", label="one")
ax.plot(np.random.randn(1000).cumsum(), color="black", linestyle="dashed", label="two")
ax.plot(np.random.randn(1000).cumsum(), color="black", linestyle="dotted", label="three")# 完成label设置,调用 ax.legend() 来自动创建图例。
ax.legend()plt.show()

输出:

838408d72cc7454c861f826ce8745b4a.png

legend() 方法还有几个其他的 location loc 参数选项。有关更多信息,请参阅官方文档。loc legend 选项告诉 matplotlib 将绘图放置在何处。默认值为 “best”,它尝试选择一个最不碍事的位置。要从图例中排除一个或多个元素,传递 no label 或 label=“_nolegend_”。

五、子图上的注释和绘图

除了标准绘图类型之外,有时候我们希望绘制自己的绘图注释,我们的注释可以由文本、箭头或其他形状组成。那我们可以使用 text、arrow 和 annotate 函数添加注释和文本。text() 在给定坐标 (x, y) 处绘制文本,具有可选的自定义样式,例如:

ax.text(x, y, "Hello world!", family="monospace", fontsize=10)

annotate 函数可以绘制适当排列的文本和箭头。我们用代码示例来学习,让我们绘制自 2007 年以来标准普尔 500 指数的收盘价(从雅虎财经获得),并用 2008-2009 年金融危机的一些重要日期对其进行注释。用到数据文件csv内容如下图所示。

bf1eba6169be4898a81f127875397fad.png

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetimefig, ax = plt.subplots()data = pd.read_csv("examples/spx.csv", index_col=0, parse_dates=True)
spx = data["SPX"]spx.plot(ax=ax, color="black")crisis_data = [(datetime(2007, 10, 11), "Peak of bull market"),(datetime(2008, 3, 12), "Bear Stearns Fails"),(datetime(2008, 9, 15), "Lehman Bankruptcy")
]for date, label in crisis_data:ax.annotate(label, xy=(date, spx.asof(date) + 75),xytext=(date, spx.asof(date) + 225),arrowprops=dict(facecolor="black", headwidth=4, width=2,headlength=4),horizontalalignment="left", verticalalignment="top")# Zoom in on 2007-2010
ax.set_xlim(["1/1/2007", "1/1/2011"])
ax.set_ylim([600, 1800])ax.set_title("Important dates in the 2008–2009 financial crisis")plt.show()

输出图形如下:

c36706e117ca486c9a49ed714d347f27.png

此图中有几个要点需要强调。ax.annotate 方法可以在指示的 x 和 y 坐标处绘制标签。我们使用 set_xlim 和 set_ylim 方法来手动设置绘图的开始和结束边界,而不是使用 matplotlib 的默认值。最后,ax.set_title 添加了一个主要标题。(请参阅在线 matplotlib 库,了解更多可供学习的注释示例)。

matplotlib 具有表示许多常见形状(称为面片)的对象。其中一些,如 Rectangle 和 Circle,可以在 matplotlib.pyplot 中找到,但完整的集合位于 matplotlib.patches 中。要向绘图添加形状,需创建 patch 对象,并将 patch 传递给 ax.add_patch 将其添加到子图轴中:

import matplotlib.pyplot as pltfig, ax = plt.subplots()rect = plt.Rectangle((0.2, 0.75), 0.4, 0.15, color="black", alpha=0.3)
circ = plt.Circle((0.7, 0.2), 0.15, color="blue", alpha=0.3)
pgon = plt.Polygon([[0.15, 0.15], [0.35, 0.4], [0.2, 0.6]], color="green", alpha=0.5)ax.add_patch(rect)
ax.add_patch(circ)
ax.add_patch(pgon)plt.show()

输出:

62a95012e60840dbb2790da7509da59c.png

如果我们仔细看一下许多熟悉的 plot 类型的实现,会发现它们是由 patchs 组装而成的。

六、将绘图保存到文件 

 可以使用 figure 对象的 savefig 实例方法将活动图窗保存到文件中。例如,要保存图形的 SVG 版本,只需键入这行代码:fig.savefig("figpath.svg")

文件类型是从文件扩展名推断出来的。因此,如果您使用 .pdf 代替,您将获得 PDF。我们经常用于发布图形的一个重要选项是 dpi,它控制每英寸点数的分辨率。要在 400 DPI 下获得与 PNG 相同的绘图,您可以执行以下操作:fig.savefig("figpath.png", dpi=400)

有关 savefig 的一些其他参数选项的见如下列表:

ca5d10ba98ca42f58bc10c081d3e0348.png

七、matplotlib 配置

matplotlib 一般情况下设置好了要绘制发布图表的配色方案的默认值以及其他选项的默认值。但我们也可以使用它的全局参数自定义控制图形大小、子图间距、颜色、字体大小、网格样式等。 以Python编程方式修改配置的一种方法是使用 rc() 方法。例如,要将全局默认窗口大小设置为 10 × 10,可以输入:plt.rc("figure", figsize=(10, 10))

所有当前配置设置都可以在 plt.rcParams 字典中找到,并且可以通过调用 plt.rcdefaults() 函数将它们恢复为默认值。rc 的第一个参数是你想要自定义的组件,比如 “figure”, “axes”, “xtick”, “ytick”, “grid”, “legend” 等等。

要进行更广泛的自定义并查看所有选项的列表,matplotlib 在 matplotlib/mpl-data 目录中提供了一个配置文件 matplotlibrc。如果您自定义此文件并将其放在名为 .matplotlibrc 的主目录中,则每次使用 matplotlib 时都会加载该文件。

 

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

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

相关文章

sqli—labs靶场 5-8关 (每日4关练习)持续更新!!!

Less-5 上来先进行查看是否有注入点&#xff0c;判断闭合方式&#xff0c;查询数据列数&#xff0c;用union联合注入查看回显位&#xff0c;发现到这一步的时候&#xff0c;和前四道题不太一样了&#xff0c;竟然没有回显位&#xff1f;&#xff1f;&#xff1f; 我们看一下源…

从建立TRUST到实现FAIR:可持续海洋经济的数据管理

1. 引言 随着我们对信息管理方式的信任&#xff0c;我们的社会对数字化数据的以来呈指数级增长。为了跟上大数据的需求&#xff0c;通过不断的努力和持续实践&#xff0c;对“good”数据管理方式的共识也在不断发展和演变。 加拿大正在建设国家基础设施和服务以及研究数据管理…

基于GPS/GIS数据融合与预处理技术的工厂导航系统(三)

在智能制造与智慧物流的背景下&#xff0c;厂区导航系统的高效性与准确性至关重要。然而&#xff0c;GPS信号易受环境干扰&#xff0c;GIS数据则可能因来源多样而存在误差。本文旨在通过详细剖析GPS数据的获取、解析与误差校正&#xff0c;GIS数据的导入、图层管理与空间数据清…

Django 外键引用另一个表中的多个字段

在 Django 中&#xff0c;外键&#xff08;ForeignKey&#xff09;通常只引用另一张表的一个字段&#xff0c;比如一个主键或一个唯一标识字段。然而&#xff0c;如果我们需要让一个外键引用另一张表中的多个字段&#xff0c;通常有以下几种方法来实现这种关系。 1、问题背景 …

Python爬虫项目 | 一、网易云音乐热歌榜歌曲

文章目录 1.文章概要1.1 实现方法1.2 实现代码1.3 最终效果 2.具体讲解2.1 使用的Python库2.2 代码说明2.2.1 创建目录保存文件2.2.2 爬取网易云音乐热歌榜单歌曲 2.3 过程展示 3 总结 1.文章概要 学习Python爬虫知识&#xff0c;实现简单的一个小案例&#xff0c;网易云音乐热…

ffmpeg内存模型

文章目录 展示图拷贝packet 重要&#xff01;&#xff01;&#xff01;avpacket.c相关函数av_packet_alloc 简单的赋值 里面的还有没有进行初始化的指针av_packet_ref 展示图 拷贝packet 拷贝packet有两种情况 1&#xff1a; 两个packet的buf引用的是同一个数据缓冲空间&#…

全域旅游平台(源码+文档+部署+讲解)

本文将深入解析“全域旅游平台”的项目&#xff0c;探究其架构、功能以及技术栈&#xff0c;并分享获取完整源码的途径。 系统概述 文旅-全域旅游平台-洛享游 包含景区、住宿、美食、演出、 路线、游记、购物、服务等模块 本项目名称为全域旅游服务管理平台&#xff0c;旨在为…

Unity内置渲染管线升级URP,使用ShaderGraph

问题描述 在内置渲染管线的工程中&#xff0c;导入之前通过ShaderGraph制作的Shader。 文件不可打开&#xff0c;我们需要升级成URP 过程记录 当前Unity版本 2022.3.49 安装Package 创建配置文件 Assets -> Rendering -> URP Asset 创建成功 修改配置 Edit->P…

【Flink】-- flink新版本发布:v2.0-preview1

目录 1、简介 2、非兼容变更 2.1、API 2.2、连接器适配计划 2.3、配置 2.4、其它 3、重要新特性 3.1、存算分离状态管理 3.2、物化表 3.3、批作业的自适应执行 3.4、流式湖仓 4、附加 4.1、非兼容性的 api 程序变更 4.1.2、Removed Classes # 4.1.3、Modified Cl…

flink sql同步mysql数据表到mysql

1. 关闭防火墙和selinux systemctl stop firewalld systemctl disable firewalld systemctl status firewalld2.安装java8 yum list java-1.8* yum install java-1.8.0-openjdk* -yjava -version3.下载和部署mysql yum -y install wget wget https://dev.mysql.com/get/Down…

Rust枚举之卧龙凤雏(Rust Option枚举、Rust Result枚举)(Rust Enum、Some(T)、Ok(T)、Err(E))链式操作

文章目录 Rust 枚举之卧龙凤雏枚举的基本概念枚举定义示例 Result 枚举&#xff1a;凤雏Result 枚举的定义Result 的使用场景示例 1&#xff1a;文件读取示例 2&#xff1a;链式操作与错误处理 Option 枚举&#xff1a;卧龙Option 枚举的定义Option 的使用场景示例 1&#xff1…

计算机网络-1.2分层结构

文章目录 三种分层结构OSI 七层模型&#xff08;Open Systems Interconnection Model&#xff09;TCP/IP 四层模型混合模型各层之间的关系PDU,SDU,PCIPDU&#xff08;Protocol Data Unit&#xff09;SDU&#xff08;Service Data Unit&#xff09;PCI&#xff08;Protocol Cont…

C++玩转物联网-从零开始:树莓派Pico的“Hello World”项目入门指南

树莓派Pico是一款功能强大且价格实惠的微控制器&#xff0c;非常适合编程初学者和电子爱好者。本文将以“Hello World”项目为例&#xff0c;带您快速入门树莓派Pico的基本操作和配置&#xff0c;为日后探索更复杂的项目奠定基础。 1. 项目概述 “Hello World”项目是树莓派P…

启动本地开发环境(自带热启动)yarn serve

文章目录 1. 安装 Yarn使用 npm 安装 Yarn使用 Chocolatey 安装 Yarn&#xff08;Windows 用户&#xff09;使用 Homebrew 安装 Yarn&#xff08;macOS 用户&#xff09; 2. 安装项目依赖3. 启动项目开发模式启动生产模式启动 4. 构建项目开发模式构建生产模式构建 5. 其他常用…

nodejs 020: React语法规则 props和state

props和state 在 React 中&#xff0c;props 和 state 是管理数据流的两种核心机制。理解它们之间的区别和用途是构建 React 应用程序的基础。 一、props 和 state的区别 特性propsstate定义方式由父组件传递给子组件的数据组件内部管理的本地数据是否可修改不可变&#xff…

架构师备考-概念背诵(软件工程)

软件工程 软件开发生命周期: 软件定义时期:包括可行性研究和详细需求分析过程,任务是确定软件开发工程必须完成的总目标,具体可分成问题定义、可行性研究、需求分析等。软件开发时期:就是软件的设计与实现,可分成概要设计、详细设计、编码、测试等。软件运行和维护:就是…

刷题强训(day06) -- 大数加法、链表相加、大数乘法

目录 1、大数加法 1.1 题目 1.2 思路 1.3 代码实现 2、链表相加&#xff08;二&#xff09; 2.1 题目 2.2 思路 2.3 代码实现 3、大数乘法 3.1 题目 3.2 思路 3.3 代码实现 1、大数加法 1.1 题目 1.2 思路 这道题可以模拟列竖式相加解答&#xff0c; 将每一位都转…

Java多线程编程(四)- 阻塞队列,生产者消费者模型,线程池

目录&#xff1a; 一.阻塞队列 二.线程池 一.阻塞队列 1.阻塞队列是⼀种特殊的队列. 也遵守 "先进先出" 的原则 阻塞队列能是⼀种线程安全的数据结构, 并且具有以下特性&#xff1a; 1.1.当队列满的时候, 继续入队列就会阻塞, 直到有其他线程从队列中取走元素 1.…

open3d

open3d open3d用于 3D 数据处理的现代库。 简介 Open3D 是一个开源库&#xff0c;支持快速开发处理 3D 数据的软件。Open3D 前端公开了一组精心挑选的 C 和 Python 数据结构和算法。后端经过高度优化&#xff0c;并设置为并行化。Open3D 是从零开始开发的&#xff0c;具有一更…

洞察鸿蒙生态,把握开发新机遇

随着科技的不断进步&#xff0c;鸿蒙系统以其独特的分布式架构和跨设备协同能力&#xff0c;逐渐在智能手机、智能穿戴、车载、家居等多个领域崭露头角&#xff0c;与安卓、iOS形成三足鼎立之势。作为一名开发者&#xff0c;我对鸿蒙生态的认知和了解如下&#xff1a; 一、鸿蒙…