Bourne 机器学习和数据科学笔记(四)
在本节课中我们将学习如何进一步自定义Matplotlib图表。我们将重点探索如何修改现有样式中的颜色映射以及如何精确控制坐标轴的显示范围从而创建出更专业、更美观的数据可视化图表。从现有样式中修改颜色上一节我们介绍了如何为图表应用不同的整体样式。本节中我们来看看如何在已选定的样式基础上进一步调整图表的颜色方案。Matplotlib提供了cmap颜色映射参数允许我们轻松更改数据点的颜色。以下是具体步骤首先我们设置图表样式为seaborn-whitegrid并创建一个展示50岁以上心脏病患者数据的散点图。importmatplotlib.pyplotasplt plt.style.use(seaborn-whitegrid)# 假设 over_50 是包含年龄和胆固醇数据的数据框fig,axplt.subplots(figsize(10,6))scatterax.scatter(over_50[age],over_50[chol],cover_50[target],cmapwinter)# 这里使用了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的图形# 为两个子图应用颜色映射scatter0ax0.scatter(over_50[age],over_50[chol],cover_50[target],cmapwinter)scatter1ax1.scatter(over_50[age],over_50[thalach],cover_50[target],cmapwinter)# 自定义第一个子图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()通过代码自动保存。掌握这些技能能帮助你将数据分析成果有效地展示和传达给他人。