Show HN: 更好的图表 – 教会智能体摆脱Matplotlib的平庸之作
本课程旨在教导AI智能体、实习生或开发者如何制作美观且信息丰富的图表,通过一套规则和最佳实践,告别Matplotlib默认的平庸外观。核心原则包括使用面向对象API、应用统一的主题样式、精简图表元素、以及明智选择图表类型。
本课程的目标是解决一个常见问题:大多数Matplotlib生成的图表看起来都像是默认输出——带有方框式边框、单调的蓝色、重复坐标轴标签的标题,以及随机整数刻度线。修复这些问题并非能力不足,而是缺乏审美规则。本课程正是这些规则的集合。
课程首先强调了从pyplot状态机转向面向对象API的重要性。通过使用fig, ax = plt.subplots(),你可以直接操作图表对象,避免全局状态的混乱。所有后续操作都应基于ax和fig,不再使用plt.*调用。这一转变是后续所有改进的基础。
接着,课程介绍了视觉层次结构:Figure(画布)、Axes(绘图区域)和Artist(所有可见元素)。每个元素都是Artist,你可以通过.set_*()方法修改其属性。坐标系统包括数据坐标、轴坐标、图形坐标和显示坐标,合理选择坐标系统可确保标注位置固定。例如,使用轴分数坐标(axes fraction)可以使标注在不同数据范围的图表中保持相同的位置。
课程通过具体示例展示了改进效果。以月度收入数据为例,默认图表使用蓝色线条、方框边框、标题仅为“revenue”,难以传达信息。改进后的图表使用灰色线条作为背景,紫色突出显示峰值点,添加直接标注和精炼标题,如“Revenue peaked in July, then cooled into year-end”,使数据故事一目了然。另一个经典例子是航空公司乘客数据(1949-1960),通过应用主题样式、绘制12个月移动平均线,并添加说明性标题“US air travel roughly 17×'d in a decade — and the summer peaks grew with it”,清晰展示了增长趋势。
课程还总结了实用规则:始终持有句柄(fig, ax);每个元素都是Artist,可被修改;有意识地选择坐标系统;在绘图前先思考图表类型。这些规则被收入项目可复用文件(如CLAUDE.md、VISUALIZATION_GUIDE.md、house_style.py),确保未来智能体能自动生成同等质量的图表。
总之,本课程不仅提供了具体的代码示例,还建立了一套可传承的审美规则,使任何人都能制作出专业、清晰的图表。