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()通过代码自动保存。掌握这些技能能帮助你将数据分析成果有效地展示和传达给他人。
