news 2026/6/30 5:49:17

Bourne 机器学习和数据科学笔记(四)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Bourne 机器学习和数据科学笔记(四)

在本节课中,我们将学习如何进一步自定义Matplotlib图表。我们将重点探索如何修改现有样式中的颜色映射,以及如何精确控制坐标轴的显示范围,从而创建出更专业、更美观的数据可视化图表。


从现有样式中修改颜色

上一节我们介绍了如何为图表应用不同的整体样式。本节中,我们来看看如何在已选定的样式基础上,进一步调整图表的颜色方案。

Matplotlib提供了cmap(颜色映射)参数,允许我们轻松更改数据点的颜色。以下是具体步骤:

首先,我们设置图表样式为seaborn-whitegrid,并创建一个展示50岁以上心脏病患者数据的散点图。

importmatplotlib.pyplotasplt plt.style.use('seaborn-whitegrid')# 假设 `over_50` 是包含年龄和胆固醇数据的数据框fig,ax=plt.subplots(figsize=(10,6))scatter=ax.scatter(over_50["age"],over_50["chol"],c=over_50["target"],cmap="winter")# 这里使用了winter颜色映射ax.set(title="心脏病与年龄和胆固醇的关系",xlabel="年龄",ylabel="胆固醇")ax.axhline(over_50["chol"].mean(),linestyle='--')ax.legend(*scatter.legend_elements(),title="目标")plt.show()

通过将cmap参数设置为"winter",我们将默认的黑白散点图变成了蓝绿色系的渐变图,使得数据点的区分更加明显。

Matplotlib内置了多种颜色映射方案,例如"summer""plasma""viridis"等。您可以在Matplotlib色彩映射官方文档中查看所有选项,并选择最适合您数据展示需求的颜色。


控制坐标轴范围

自定义颜色的图表看起来更好了,但坐标轴上的多余线条(如刻度线延伸出的网格线)有时会影响美观。接下来,我们学习如何使用set_xlim()set_ylim()方法来控制X轴和Y轴的显示范围,从而修剪掉这些多余的线条。

我们将使用之前创建的子图(subplot)代码作为例子,并为其应用颜色映射。

以下是关键代码示例,展示了如何为两个子图分别设置坐标轴范围:

# 假设已创建包含两个子图(ax0, ax1)的图形# 为两个子图应用颜色映射scatter0=ax0.scatter(over_50["age"],over_50["chol"],c=over_50["target"],cmap="winter")scatter1=ax1.scatter(over_50["age"],over_50["thalach"],c=over_50["target"],cmap="winter")# 自定义第一个子图(ax0)的X轴范围,截断右侧多余的线ax0.set_xlim([None,50])# 自定义第二个子图(ax1)的X轴和Y轴范围ax1.set_xlim([50,80])ax1.set_ylim([60,200])

通过上述设置,我们实现了以下效果:

  • 删除了第一个子图X轴上超出50的多余部分。

  • 将第二个子图的X轴范围精确限定在50到80之间。

  • 将第二个子图的Y轴范围限定在60到200之间,从而移除了顶部和底部不必要的空白和线条。

最终,我们得到了一个布局干净、色彩分明、信息呈现专业的图表,非常适合于报告或分享。


https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/bourne-ml-ds/img/064b4b7180ba50d9a115226ac295d8e3_2.png

本节课中我们一起学习了Matplotlib图表自定义的两个进阶技巧:使用cmap参数更改颜色映射,以及使用set_xlim()set_ylim()方法精确控制坐标轴范围。结合之前学习的样式设置,您现在应该能够创建出高度定制化、视觉效果出色的数据可视化图表。请尝试使用不同的颜色映射和坐标轴范围,创建属于您自己的心脏病数据分析图表版本。

81:保存与分享你的图表 📊

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/bourne-ml-ds/img/6ca402833e1b10d0019663d750441c74_0.png

在本节课中,我们将学习如何将使用 Matplotlib 创建的图表保存为图像文件,以便于分享或在演示中使用。这是数据可视化工作流程的最后一步,也是展示你工作成果的关键环节。


上一节我们介绍了如何自定义和美化图表。本节中我们来看看如何将最终的图表成果保存下来并分享给他人。

当然,如果你一直在 Jupyter Notebook 中工作,你可以在图表上方添加文字说明来阐述你的发现。例如,你可以创建一个单元格,写上“此图表展示了心脏病数据集的一些信息”。你可能会进行更深入的描述来沟通你的工作,然后直接分享你的笔记本文件。

但如果你不想分享整个笔记本,例如在做演示时无法直接运行代码展示过程,你可能需要将图表导出为独立的图像文件。

以下是保存图表的两种主要方法:

1. 手动保存图像

这可能是最简单的方法。你可以在 Jupyter Notebook 中生成的图表上右键点击,选择“另存为图像”。然后选择保存位置和文件名,例如heart_disease_analysis_plot.png。这样你就得到了一个 PNG 格式的图像文件,可以轻松地插入到 Keynote、PowerPoint 等演示文稿中。

2. 通过代码自动保存

另一种更程序化的方法是使用savefig方法。当我们使用plt.figure()或类似方法创建图表时,会生成一个fig(图形)对象。这个对象目前存储在内存中。我们可以调用fig.savefig()方法来将其保存到磁盘。

例如,使用以下代码:

fig.savefig('heart_disease_analysis_plot_saved_with_code.png')

这行代码会将当前图形保存为名为“heart_disease_analysis_plot_saved_with_code.png”的 PNG 文件。PNG 是savefig方法的默认保存格式。

在实际工作中,如果你需要反复生成同类型的图表,可以将绘图和保存的代码封装到一个 Python 函数中。这样,每次调用函数后,图表都会自动导出,提高了工作效率。


恭喜你完成了 Matplotlib 部分的学习!我们从创建一个空白的图表开始,一路学习到如何基于处理过的数据集,制作出高度自定义的复杂子图。

如果你现在感觉有些内容还不太清晰,请不要担心。这类工作需要一些练习和时间来熟悉。通过反复编写代码、犯错和纠错,你会逐渐掌握它。最好的学习方式就是动手实践:尝试用 NumPy 数组创建自己的 DataFrame,然后尽情发挥创意绘制各种图表。试试不同的样式,试试不同的数据,可能性是无限的。

如果需要,现在可以稍作休息。我们下一章节再见 👋。


https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/bourne-ml-ds/img/6ca402833e1b10d0019663d750441c74_2.png

本节课总结

本节课我们一起学习了数据可视化的最后一步:保存与分享图表。我们介绍了两种保存方法:手动右键另存为,以及使用fig.savefig()通过代码自动保存。掌握这些技能能帮助你将数据分析成果有效地展示和传达给他人。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/29 1:33:06

Mesen:从怀旧游戏到专业调试的NES模拟器进化之路

Mesen:从怀旧游戏到专业调试的NES模拟器进化之路 【免费下载链接】Mesen Mesen is a cross-platform (Windows & Linux) NES/Famicom emulator built in C and C# 项目地址: https://gitcode.com/gh_mirrors/me/Mesen 你是否曾想过,为什么有些…

作者头像 李华
网站建设 2026/6/30 2:33:19

HS2-HF补丁:解锁《Honey Select 2》完整游戏体验的终极解决方案

HS2-HF补丁:解锁《Honey Select 2》完整游戏体验的终极解决方案 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 还在为《Honey Select 2》的语言障碍…

作者头像 李华
网站建设 2026/6/29 1:11:13

超越引擎限制:RPG Maker插件库的模块化架构设计与实战应用

超越引擎限制:RPG Maker插件库的模块化架构设计与实战应用 【免费下载链接】RPGMakerMV RPGツクールMV、MZで動作するプラグインです。 项目地址: https://gitcode.com/gh_mirrors/rp/RPGMakerMV 当你面对RPG Maker引擎的功能限制时,是否曾感到束…

作者头像 李华
网站建设 2026/6/30 2:33:14

近期量化工具别求全能,先按学习阶段换重点

零基础学量化时,工具问题经常被问成一个固定答案:到底应该用哪一种。可入门过程不是单一动作,不同阶段要解决的事情并不一样。把阶段拆开以后,工具的重点也会随之变化,AI 的作用也更容易被放到合适的位置。代码要回到规…

作者头像 李华
网站建设 2026/6/30 1:40:34

3步破局:重新定义游戏UI设计与开发的无缝对接

3步破局:重新定义游戏UI设计与开发的无缝对接 【免费下载链接】FigmaToUnityImporter The project that imports nodes from Figma into unity. 项目地址: https://gitcode.com/gh_mirrors/fi/FigmaToUnityImporter 还在为游戏UI设计到开发的漫长流程而苦恼吗…

作者头像 李华
网站建设 2026/6/29 1:04:13

量子计算高阶算子分裂技术解析与应用

1. 量子计算中的高阶算子分裂技术解析在量子计算领域,模拟复杂物理系统的动力学行为一直是个核心挑战。传统方法在处理耗散系统时面临根本性限制——量子计算机本质上只能执行幺正演化,而现实世界中的大多数物理过程都涉及能量耗散和不可逆性。高阶算子分…

作者头像 李华