返回评测
代码生成 代码-视觉转代码 未饱和 模态 · 图像 任务 · 代码生成

ChartMimic

1,000 组「参考图表 → 绘图代码」任务,覆盖 32 类图表与 10 类风格,用视觉与代码双重指标评估复现质量

多校联合(ChartMimic 团队) ·

考察能力

图表理解 matplotlib 代码生成 视觉复现 数据提取

构建信息

数据规模
1,000 组任务(32 类图表 × 10 类风格)
构建方式
收集真实科研与业务图表,标注其绘图代码与数据,按图表类型与视觉风格分层构建
评测方式
渲染后与参考图比对(视觉相似度 + 代码执行 + 人工偏好)
核心指标
Execution Pass Rate / Visual Similarity / Human Preference

为什么重要

图表是「视觉转代码」里最考验细节的一类:不光要认出这是柱状图还是折线图,还要把数据值、坐标轴范围、配色、图例位置、标注都还原出来。差一点就「看着像但数据不对」——这在真实场景里比明显画错更危险。

ChartMimic 的构建刻意做了两个维度的分层:图表类型(柱状、折线、散点、饼图、热力图、雷达图等 32 类)和视觉风格(配色方案、网格线、边框、字体等 10 类)。这样评测结果可以按维度拆解,知道模型到底卡在「认不出图表类型」还是「读不准数据值」。

对数据侧的意义:图表类任务的数据获取有一个天然优势——绘图代码就是精确标注。任何一份 matplotlib/seaborn 脚本都能渲染成图,反过来任何图也可以配一段能画出它的代码。这与 WebSight 同理,属于「可程序化生成」的任务,合成数据路线通畅。

构建方式

  1. 从科研论文、报告与业务材料中收集真实图表
  2. 为每张图表标注可复现的绘图代码(主要是 matplotlib)与底层数据
  3. 按图表类型(32 类)与视觉风格(10 类)分层,保证覆盖均匀
  4. 评测分三层:
    • 执行通过率:生成的代码能否无错运行
    • 视觉相似度:渲染结果与参考图的像素/结构相似度
    • 人工偏好:人工对比生成图与参考图
  5. 提供分层得分,便于定位失败维度

任务示例

输入:一张分组柱状图(含 4 组、3 个系列、图例在右上、带数值标注)

输出:

import matplotlib.pyplot as plt
import numpy as np

labels = ['Q1', 'Q2', 'Q3', 'Q4']
a = [23, 45, 56, 78]
b = [34, 39, 51, 62]
c = [12, 28, 41, 55]

x = np.arange(len(labels)); w = 0.25
fig, ax = plt.subplots()
ax.bar(x - w, a, w, label='2022')
ax.bar(x, b, w, label='2023')
ax.bar(x + w, c, w, label='2024')
ax.set_xticks(x); ax.set_xticklabels(labels)
ax.legend(loc='upper right')
plt.show()

评分会检查代码是否可运行、渲染出的柱高比例是否与参考图一致、图例位置与配色是否对得上。

最新进展

  • 论文基线显示:模型在「图表类型识别」上表现较好,但在数据值精确还原与风格细节上失分明显
  • 与 Plot2Code、Design2Code 一起构成视觉转代码方向的评估矩阵:Design2Code 偏 UI 网页,ChartMimic / Plot2Code 偏图表
  • 合成数据(脚本 → 图)在这类任务上被证明有效,与 WebSight 的结论一致

关键发现

  • 「看着像」不等于「数据对」:视觉相似度高但数值还原错的样本普遍存在,是这类任务的主要风险
  • 分层评估有诊断价值:能区分是图表类型没认出、数据没读准,还是风格细节没跟上
  • 绘图代码即标注:可程序化生成,合成数据成本低
  • 与通用代码能力相关但不完全重叠:能写代码的模型不一定能精确复现图表的数据与版式
图表 视觉转代码 matplotlib 多模态代码生成 数据可视化