SuperAPI AI 工具集

matplotlib

通用与其它

查看项目

更新于 10-15 23:49

技能介绍

用途:面向直接用 matplotlib 编写独立图表脚本、示意图生成器或画布渲染的场景,提供图形工程模式、常见陷阱与可复用辅助函数。

主要能力与要点:

  1. 文本与标注:ax.text() 不接受 set_clip_on 关键字参数,需在创建后调用 t.set_clip_on(True);用数据单位做固定偏移会在大范围图表正常、小范围图表把标签推到坐标轴外,因默认 clip_on=False 且 bbox_inches='tight' 会把越界文本计入边界,导致画布高度异常(如 11000px+)。应改用 ax.annotate(),xy 用数据坐标、xytext 用 offset points,使视觉偏移与尺度无关。柱顶标签同理。
  2. 字体与符号:Unicode 箭头 ↑↓→ 在 Helvetica Neue 或 lualatex 字体下不渲染,改用 ASCII +/-/>;lualatex 下 ≥ ≤ ≠ ≈ 可用,× 不在 Latin Modern 中。f-string 中的 $ 会被当作 LaTeX 数学模式,需转义为 \$。
  3. 保存与关闭:必须先 plt.savefig() 再 plt.close(),顺序颠倒会得到空白 PNG 且无报错;render() 不应调用 show() 或 close()。
  4. 阈值与图例:柱内标签阈值应相对尺度(max(abs_floor, total_range * fraction),fraction 约 0.08–0.12),可分三层处理;过窄段金额移到图例标签。图例可置于 x 轴下方,用 loc='upper center' 与 bbox_to_anchor=(0.5, -0.04),配合 tight_layout 与 savefig 的 bbox_inches='tight'。
  5. 布局:tight_layout 与 subplots_adjust 冲突,只能选其一;需要精确边距时用单个 subplots_adjust。bbox_inches='tight' 会破坏系列图尺寸一致性,需固定像素尺寸时用 subplots_adjust(left=0,right=1,top=1,bottom=0) 并省略该参数。
  6. 其它陷阱:addfont() 注册名与文件名不同,需用 FontProperties(fname=path).get_name() 确认;FancyBboxPatch 的 round,pad 会向外扩展 rad,靠近画布边缘会被静默裁剪;HandlerBase.create_artists() 返回空列表会使 legend_artist() 抛 IndexError,应直接覆写 legend_artist()。
  7. 图示模式:箭头端点用几何求交(rect_edge/circ_edge)而非硬编码偏移;系列图中共享元素应定义为模块级常量;图标只在形状无法表达语义时使用。

限制:以上为经验性工程约定,具体行为随 matplotlib 版本可能不同;资料未提供安装方式、版本要求、收费与平台信息。