news 2026/9/11 21:20:57

用Codex高效绘制数学建模论文图表:从数据清洗到论文级美化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用Codex高效绘制数学建模论文图表:从数据清洗到论文级美化

先说结论:如果你正在准备数学建模竞赛,又被论文里一摞图表搞到凌晨三点还在调坐标轴,那 Codex 值得你花一小时认真试一下。我用它画 2023 国赛 C 题(蔬菜类商品的自动定价与补货决策)的图表时,从数据清洗到论文插图,整个流程比手搓 matplotlib 舒服太多了。这篇文章不是 Codex 的官方文档翻译,而是一次完整实战复盘:为什么用 Codex、怎么装、C 题到底要画哪些图、怎么把图从“能看”调到“能放进论文”,最后再把我踩过的坑全部交代干净。适合所有想用 AI 辅助建模绘图、又怕被工具反噬的同学参考。

1. 为什么我用 Codex 画论文图,而不是继续手搓 matplotlib

1.1 Codex 到底是个什么工具

Codex 是 OpenAI 出的一个命令行编程智能体,属于当下很热门的 agent 类工具。你给它一句自然语言任务,比如“把 data 文件夹里的销售数据按品类聚合,画一张按月销量折线图,中文标签,保存到 figs 目录”,它会自己写代码、运行代码、看报错信息,然后继续改到通过为止。整个过程中你可以像使唤一个实习生一样跟它对话,也可以随时打断它、纠正它。

数学建模竞赛里,我们常用的绘图方式无非三种:一是 Excel 直接插入图表,适合快速但丑,几乎不进论文;二是 Python matplotlib / seaborn 手写代码,灵活但调试耗时;三是 Origin、GraphPad 这类专业软件,功能强但处理大数据集时反而麻烦。Codex 本质上是把第二种方式的“写代码、查文档、改 bug”这个环节自动化了,让你把精力留在赛题分析和结果解释上。

对我来说,Codex 最大的价值不是“能画图”,而是“能理解画图意图”。建模论文里的图表往往需要反复调整:坐标轴范围、图例位置、字体大小、配色风格、标注显著性。手写代码时每改一处都要重新跑一遍、看效果、再改,一个图磨半小时是常事。Codex 模式下,你只需要说“把中文字体设为黑体,去掉上边框和右边框,图例放左上角,输出 300 DPI 的 PNG”,它会在几秒内完成修改。

1.2 数学建模绘图这件事,痛点到底在哪

参加过数学建模国赛的同学应该都有体会:三天的比赛时间,真正留给画图的时间可能只有半天,但论文里对图片质量的要求又特别高。每年评阅规则里都会强调“图表清晰、信息完整、排版规范”,一张模糊的、缺单位、缺图题的图,很可能直接影响评阅体验。

我整理过建模绘图的几个典型痛点:

  • 数据格式乱:附件里经常是多个 Sheet、多张表,日期是文本、销量是对象类型,直接拿原始表画图必报错。
  • 中文字体崩:matplotlib 默认字体不支持中文,出来的图全是方框,不设置rcParams根本没法用。
  • 坐标系和单位不规范:坐标轴没有标签,刻度密度不合理,图上没有标题和数据来源说明。
  • 迭代效率低:特征工程、模型调参导致的多次重跑,使得同样一张图要连续改七八版。

这些问题 Codex 都能解决一部分,尤其是“数据格式乱”和“中文字体崩”这种重复性高、又特别消耗耐心的工作,交给它会非常划算。不过我要提前打个预防针:Codex 不是你扔一句“帮我画张图”就能拿高分图的,它需要你会提需求。换句话说,你脑子里必须先有这张图的草图,Codex 只是把你的意图最快变成成品。

1.3 Codex 适合解决绘图流程里的哪些环节

结合我自己的使用经验,Codex 在建模绘图里的优势场景很明确:

  • 数据探索阶段:快速画出所有变量的分布图、相关性热力图、时间序列总览,帮你建立对赛题数据的直觉。
  • 批量出图阶段:同一套分析逻辑套用到不同品类、不同时间段,Codex 可以批量产出几十张图。
  • 论文精修阶段:把图导出成 PDF 或高分辨率 PNG,调整字体统一、尺寸规范、配色统一。

不太适合的场景也有:比如你完全不知道自己要画什么,指望 Codex 帮你想清楚赛题思路,这是一个误区。Codex 能帮你画图,但不能替你做建模决策。你要先知道“我想表达什么”,它才能把“怎么表达”这件事做好。

2. 上手准备:把 Codex 装好并跑通一次绘图

2.1 安装前的环境准备

Codex 目前是一个命令行工具,我用的环境是 macOS,但它在 Windows 和 Linux 上也能跑。安装之前确保你的电脑满足两个基本条件:

  • Node.js 18 或更高版本(Codex 本体是 npm 包,需要 Node 运行时)。
  • Python 3.9 或更高版本(因为我们画图的主体是 matplotlib,建议顺手装好 pandas、numpy、seaborn)。

检查 Node 和 Python 版本很简单,终端里跑:

node -v python --version

如果你还没装 Node,去 Node 官网下一个 LTS 版本安装即可,不展开。Python 环境我推荐直接用 Anaconda 或 Miniconda,因为建模需要的库基本都预装了,省得后期一堆依赖冲突。

2.2 最简安装与登录

Codex 的安装命令非常短,用 npm 全局安装:

npm install -g @openai/codex

安装完成后,在终端输入codex回车,会进入初始化流程,核心是登录账号并完成授权。按终端里的提示操作就行,登录成功后会生成一个会话,你可以在里面直接输入任务描述。

还有一个细节:Codex 默认会执行它生成的 shell 命令,所以第一次运行某个命令时,它会弹出确认提醒,问你是否允许执行。我一般直接选“允许本次”,后面它跑起来会顺畅很多。如果你用的是国内模型服务商的 OpenAI 兼容接口,也可以在~/.codex/config.toml里单独指定模型提供方和接口地址,这样 Codex 就能用你更熟悉的模型来跑任务。

提示:Codex 本质上是一个“能碰你文件系统”的编程智能体,建议在专门的建模项目目录里使用,不要直接在系统根目录或重要项目里随便跑,防止它一顿操作把文件改坏。

2.3 用命令行把第一张图画出来

装完之后,我先在一个空目录里放了一个测试数据文件test.csv,里面就是几行模拟数据:

category,month,sales 叶菜类,2023-01,120 叶菜类,2023-02,98 茄果类,2023-01,80 茄果类,2023-02,110

然后我在终端里进入这个目录,输入codex,在交互界面里直接跟它说:

“读取 test.csv,用 matplotlib 画一张各品类月度销量折线图,中文字体用 SimHei,保存成 figs/test_trend.png。”

Codex 开始干活后,会先读取文件内容,然后写一段 Python 脚本,运行,如果报错它会看到错误信息并自动修改。大概一两分钟后,它就返回了“图片已保存”的提示。我打开figs/test_trend.png,发现图已经画好了,坐标轴、图例、标题都正常,中文没有乱码。

这一张图跑通,Codex 绘图的基础链路就算建立了。接下来就可以进入正题,开始处理 2023 国赛 C 题。

3. 2023 国赛 C 题到底要画哪些图:从赛题出发拆绘图任务

3.1 C 题背景与核心数据

2023 年高教社杯全国大学生数学建模竞赛的 C 题是“蔬菜类商品的自动定价与补货决策问题”。背景是生鲜商超里蔬菜保鲜期短,商家需要在凌晨补货时,根据历史销售数据判断第二天进多少货、定什么价,既要减少损耗,又要最大化利润。

题目给出的数据大致包括:蔬菜各品类的销售流水明细(销售日期、商品编码、商品名称、销售量、销售单价等信息)、批发价格、损耗率,以及对应的商品分类信息。年份跨度我记得是 2020 年 7 月到 2023 年 6 月,数据量不算小,处理时需要按日期、品类做聚合。

比赛的问题链路很清晰:

  • 第一问:分析各品类和单品的销售总量、销售总额的分布规律及相互关系,同时分析品类销售总量与成本加成定价之间的关系。
  • 第二问:给出各蔬菜品类未来一周的日补货总量和定价策略。
  • 第三问:在预测基础上,把补货和定价细化到单品层面,给出完整方案。
  • 第四问:结合分析提出改进建议。

从这个任务链可以看出,C 题本质上是一道“数据描述 → 规律挖掘 → 预测优化 → 决策建议”的综合题。图表的任务也就非常明确:你要通过图把数据规律、模型结果、决策方案呈现给评阅老师。

3.2 论文里真正能用得上的图

赛题论文里不是图越多越好,而是每张图都要有明确的信息指向。我结合 C 题的数据结构和评阅偏好,整理了这样一份“图表清单”:

图表类型用在赛题第几问要表达的信息
各品类月度销量趋势折线图第一问销量整体变化规律、季节性
各品类销售额占比饼图或堆叠柱状图第一问品类结构分布
销量与价格相关性散点图/热力图第一问价格对销量的影响关系
各品类损耗率对比图第一问损耗结构差异
未来一周销量预测曲线图第二问预测模型的拟合效果
补货量与定价策略对比图第三问优化前后的利润或损耗对比
灵敏度分析折线图第三问参数变化对决策结果的影响

这个清单不是绝对的,但基本覆盖了 C 题论文的插图需求。有了这个清单,你在用 Codex 的时候就不再是“乱画一通”,而是按图索骥,一张一张补齐。

3.3 先建一个规范的绘图工作目录

建模比赛时间紧张,目录乱了会直接拉低效率。我在动手分析之前先把项目目录收拾清楚,Codex 跑起来也会少很多困惑。一个典型结构是:

c_2023_codex/ ├── data/ │ ├── raw/ # 原始附件 │ └── processed/ # 清洗后的数据 ├── scripts/ # Codex 自动生成的代码 ├── figs/ # 最终论文用图 └── explore/ # 临时探索脚本

给 Codex 下指令时,我通常会明确告诉它“读取data/processed/sales_clean.csv,输出到figs/”。路径越明确,它出错越少。很多人觉得 Codex 会找文件,其实它只是根据你的描述主动去探索,但目录规范能大幅减少它找错文件、写错路径的概率。

4. Codex 绘图实战:从数据到图表全流程

4.1 让 Codex 先把数据摸清楚

拿到赛题附件后,我不急着画图,先让 Codex 做一轮“数据体检”。这一步非常重要,因为后续所有图表的正确性都建立在数据清洗之上。

我当时的指令大概是这样的:

“读取 data/raw 下的销售流水文件,检查字段名、数据类型、缺失值、日期范围,把日期统一成 datetime 类型,销售量和销售单价转成数值类型,按 商品编码、销售日期、品类 几个字段输出清洗后的汇总表,保存为 data/processed/sales_clean.csv,同时打印前 20 行数据。”

注意,这句话里我同时给了“读什么、做什么、输出什么、保存到哪”四个信息,Codex 的执行就会非常明确。它跑完后会打印出前 20 行数据,我可以快速确认字段是否正确、日期格式有没有问题、有没有离谱的缺失值。如果哪个字段被读成了对象类型,我再补一句“把销售单价里的元字去掉,转成 float”。

这一步里,Codex 比手动写代码高效的地方在于:它会自动看报错、自动尝试多种读法。比如 Excel 文件里如果存在合并单元格或者多级表头,手动写 pandas 读起来很烦,Codex 反而会自己尝试调整参数把它读进来。

4.2 按论文需求批量生成描述性图表

数据清洗完成后,我就开始根据前面那张“图表清单”批量出图。

第一张先做“各品类月度销量趋势折线图”。我给的指令是:

“基于 data/processed/sales_clean.csv,把销售日期按月聚合,统计每个品类每月的销售总量,用 matplotlib 画一张多品类折线图,横轴是月份,纵轴是销售总量,每种品类一条线,颜色要色盲友好,图例放在右下角,图片大小 10x5,保存为 figs/category_monthly_trend.png,分辨率 300 DPI。”

Codex 生成的代码大致会是下面这个路子:

import matplotlib.pyplot as plt import pandas as pd plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'Noto Sans CJK SC'] plt.rcParams['axes.unicode_minus'] = False df = pd.read_csv('data/processed/sales_clean.csv') df['销售日期'] = pd.to_datetime(df['销售日期']) df['月份'] = df['销售日期'].dt.to_period('M') monthly = df.groupby(['品类', '月份'], as_index=False)['销售数量'].sum() fig, ax = plt.subplots(figsize=(10, 5)) for cat, grp in monthly.groupby('品类'): ax.plot(grp['月份'].astype(str), grp['销售数量'], label=cat) ax.set_xlabel('月份') ax.set_ylabel('销售总量') ax.set_title('各品类月度销量趋势') ax.legend(loc='lower right') plt.xticks(rotation=45) plt.tight_layout() plt.savefig('figs/category_monthly_trend.png', dpi=300, bbox_inches='tight') plt.close()

我拿到图片后看了一眼,整体没问题,但横轴刻度太密,标签全挤在一起。于是加一句:“把横轴刻度改成每 6 个月一个标签,月份标签旋转 45 度”。Codex 会很快修改并重新输出图片。

第二张画“各品类销售额占比”。我让它基于销售量和单价的乘积做月度聚合,然后画一张堆叠柱状图,这个图在第一问里能直观展示品类结构。因为数据是 6 年的,我还会让它单独截取 2022 年或者 2023 年上半年,避免图太拥挤。

4.3 多轮对话迭代优化图表

Codex 的一个核心竞争力是“多轮迭代”。我第一次让它画图时,出来的往往是“能看但不够精致”的水平,需要二次甚至三次修改。比如 2023 C 题里需要画“价格与销量关系”的散点图,我第一轮直接说:

“画一张销售单价与销售数量的散点图,横轴是单价,纵轴是销量,点的大小表示销售金额,点的颜色表示品类。”

出来的图问题很明显:数据点太多,重叠严重,几乎看不出趋势。这时候我没有重新写代码,而是补充了一句:

“把数据按单品的平均单价和平均日销量聚合,再画散点图,这样点不会重叠,顺便用颜色区分品类,并在每个品类旁边标注品类名。”

Codex 重新聚合数据后,图立刻清爽了很多。后面我又加了“用浅色圆环表示每个品类的置信椭圆”,它就真的用 matplotlib 的Ellipse加了一个椭圆,用来展示聚类特征。这个效果在论文里看起来非常专业,实际上我只花了几句话的功夫。

这里有一个我很想强调的心得:Codex 修改图的时候,不要一次给它五六条修改意见。它会执行,但如果中途有一条理解偏差,整个图可能越改越乱。我一般一轮只调整一个方面,比如第一轮只改字体,第二轮改配色,第三轮改标注,这样每一步都是可控的,出了问题也知道是哪一步造成的。

5. 论文级图表的美化与格式规范

5.1 中文字体与坐标轴规范

数学建模论文几乎都是中文写的,所以图里绝对不能出现乱码方框。Codex 虽然能根据指令设置中文字体,但前提是你得告诉它用什么字体。不同系统可用的字体不一样,我最常用的三组:

  • Windows:SimHei(黑体)、Microsoft YaHei(微软雅黑)
  • macOS:PingFang SC、Heiti SC
  • Linux:Noto Sans CJK SC

为了让 Codex 生成的所有图都统一,我会在第一次绘图指令里就附带这样一句:

“在脚本开头设置 matplotlib 全局字体为 ['SimHei', 'Microsoft YaHei', 'Noto Sans CJK SC'],并禁用 Unicode 负号,避免负号显示为方框。”

在代码里对应的就是:

plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'Noto Sans CJK SC'] plt.rcParams['axes.unicode_minus'] = False

还有一个容易被忽略的点:坐标轴的刻度数量。默认情况下 matplotlib 会自己选刻度,但建模论文里我往往希望横轴是具体的年份月份,纵轴是明确的数值区间,这时候直接用plt.xticks()ax.set_xticks()指定刻度列表。Codex 下指令时你就说“横轴刻度设置为 2020-07 到 2023-06 每半年一个刻度”,它会帮你排好。

5.2 导出尺寸与格式

国赛论文通常要求提交 PDF 或 Word 版本,图片清不清楚,直接影响打印和评阅。我个人对于论文插图有两条硬性标准:

  • 分辨率不低于 300 DPI,重要图片建议 600 DPI。
  • 优先保存 PDF 或 SVG 矢量格式,方便后续排版放大缩小不失真。

用 Codex 批量出图时,我会在指令里直接要求同时导出两种格式:

“图片尺寸 8x4 英寸,保存为 figs/figure_name.png(dpi=300)和 figs/figure_name.pdf 两个版本。”

实际跑出来之后,PDF 版本我会用于最终的论文排版,PNG 版本用于平时快速预览。

另外,bbox_inches='tight'这个参数建议大家要求 Codex 默认加上。它会把图表的空白边框裁掉,让图片在论文里看起来更紧凑,不会出现四周大片留白的情况。

5.3 图表在 LaTeX 或 Word 里的最终排版

图图画得好,排版也不能拖后腿。我见过很多人 Codex 图都生成了,结果插入 Word 的时候把 PDF 直接拖进去,显示不出来,或者图片被拉伸变形。我的建议是:

  • 如果是 Word 排版,优先插入 PNG,并且图片宽度统一设置为 14 厘米左右,保证版式统一。
  • 如果是 LaTeX 排版,把 PDF 文件放到figs/目录,用\includegraphics引入,width=0.85\textwidth这样比较合适。
  • 图片编号和图题保持统一格式,比如“图 1 各品类月度销量趋势”,图题放在图片下方,居中,字号比正文小一号。

其实这种排版细节完全可以继续交代给 Codex:比如“把这几张图都改成统一宽度、统一字号”,它虽然不能直接在 Word 里操作,但可以帮你重新生成符合版式需求的图片版本。总体上,Codex 能解决“图好看”的问题,排版“图规范”的问题还需要你自己把关。

6. 高频踩坑与排查记录

6.1 Codex 生成的代码有 bug 怎么办

Codex 虽然会自动修 bug,但偶尔也会出现“它觉得自己修好了、实际还是有问题”的情况。有一个标志性行为:它反复执行同一条命令,然后每次都显示相同的报错。这时候最有效的办法是打断它,然后明确说:

“别继续执行了,先分析当前代码和报错原因,告诉我你打算怎么改,等我说开始你再改。”

这样能让 Codex 从“盲目重试”切换到“分析模式”。我实测下来,把它从“行动模式”拉回“思考模式”后,大部分 bug 都能被它自己定位到,比如数据类型不对、列名写错、目录不存在等等。

6.2 数据量大时数据读取慢、图表卡顿

C 题的销售流水数据量不小,如果直接让 Codex 读原始明细再逐行绘图,代码跑起来会非常慢,有时候一张图要卡好几分钟。我的处理办法是先把数据聚合好,生成一层“分析用的中粒度数据”,再让 Codex 基于聚合后的数据画图。

具体来说,我在数据清洗阶段就让 Codex 先生成几个中间文件:

  • sales_daily_by_category.csv:按日期、品类聚合的日销量
  • sales_monthly_by_category.csv:按月份、品类聚合的月销量
  • item_summary.csv:按单品聚合的平均价格、总销量、销售额

后面只要画图就基于这些 CSV,画图速度从几十秒降到一两秒。Codex 跑得顺畅,我有更多时间看图的含义。

6.3 图片不符合论文要求时的补救技巧

如果 Codex 生成的图片整体没问题,但就是有些细节过不去,比如单位没标、图例太小、颜色太艳,不要重新画,直接针对细节下指令。Codex 对“微调”类指令的响应往往比“重新画”更好。

我常用的微调指令包括:

  • “把图例字号改成 9,坐标轴标签字号改成 11,标题字号改成 12 加粗。”
  • “纵轴单位是‘件(万)’,在坐标轴标签里标明。”
  • “把边框去掉,只保留左轴和下轴。”
  • “每个柱子顶部标上具体数值,保留一位小数。”

一轮只给一两条,改完保存,打开看看,再继续下一轮。这样五六个来回之后,图片基本就能达到直接放进论文的水平。

6.4 常见问题与排查速查表

问题现象原因解决办法
中文显示为方框matplotlib 缺中文字体配置在脚本里设置rcParams['font.sans-serif']
负号显示为方框默认字体缺少 Unicode 负号设置axes.unicode_minus = False
图片模糊DPI 设置太低导出时dpi=300,或保存 PDF 矢量格式
Codex 反复执行报错对当前 bug 死循环让它先分析再修改,明确“不要重复执行”
图例挡住了数据图例位置不合适指定loc,或直接让图例放在图外右侧
横轴日期过密刻度间隔太小指定ax.set_xticks,控制刻度数量
Codex 找不到文件工作目录或路径不对把数据文件和代码放在同一项目目录,使用相对路径

这个速查表是我用 Codex 绘图这段时间沉淀出来的最实用内容。碰到问题先查表,比反复试错效率高得多。

还有一个独家经验:Codex 在绘图时默认生成的配色是 matplotlib 的经典配色,虽然不难看,但放论文里显得不够高级。我通常会让它使用一套固定色系,比如“低饱和度的蓝、橙、绿、红四色”,或者一句话让它是用 seaborn 的deep配色方案。统一色系之后,全篇论文的图片放在一起会非常协调,这个细节在评阅时很加分。

最后再分享一个小技巧

如果你准备在正式比赛里用 Codex 绘图,我建议你在赛前先花一个晚上,把自己要画的图表类型列一遍,然后批量写一些“绘图 prompt 模板”。比如“读取某 CSV,画某品类的销量趋势,保存到某目录,中文字体统一,300 DPI”,这些模板在比赛当天可以直接复用,省下大量现场组织语言的时间。

我自己在实际操作中最深的体会是:Codex 不是替你画图的,而是替你实现画图意图的。你对赛题理解得越透、对图表想要表达的内容越清楚,Codex 给你带来的效率提升就越夸张。反过来,如果脑子里的图还是糊的,那 Codex 再强也画不出能用的论文图。先想清楚再让 Codex 动手,这句话值得刻在比赛桌面上。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 21:14:57

C++隐式接口与编译器多态深度解析

1. 理解隐式接口与编译器多态的本质在C模板编程中,我们经常会遇到"隐式接口"这个概念。与传统的显式接口(如抽象基类中定义的纯虚函数)不同,隐式接口不是通过函数签名明确声明的,而是通过模板参数在实际使用…

作者头像 李华
网站建设 2026/9/11 21:14:17

Python+WebAR教育增强系统:从三维注册到教学资源管理

简介:本资源是一套完整的Python毕业设计项目——基于增强现实(AR)的教育信息系统,面向计算机类专业本科生、研究生及初学者,解决传统教学系统缺乏沉浸式交互与可视化呈现的问题,适用于毕业设计、课程设计、…

作者头像 李华
网站建设 2026/9/11 21:12:11

杰理人声消除算法:实时音频处理与深度学习应用

1. 项目概述:杰理人声消除算法的核心价值在音频处理领域,人声消除一直是个让人又爱又恨的技术。作为从业十多年的音频算法工程师,我见证过太多号称"一键消除人声"的方案最终翻车的案例。直到接触到杰理的这套算法,才真正…

作者头像 李华
网站建设 2026/9/11 21:09:19

车载逆变储能电源控制板设计要点与调试避坑指南

车载逆变储能电源这几年在户外露营、房车改装、应急备电和移动作业场景里越来越常见。这类设备看着功能简单,就是把电池组的直流电逆变成220V交流电,顺带把充电、旁路、保护这些功能整合在一起。但真正自己做一块控制板的时候,才会发现坑全藏…

作者头像 李华
网站建设 2026/9/11 21:05:19

可靠性三综合试验全解析:从原理到设备选型与实操

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 21:04:18

32位ALU设计实战:从结构图到可综合Verilog与验证

简介:围绕三十二位ALU的ISE工程设计资源,面向数字逻辑、计算机组成原理学习者及FPGA入门开发者,用于理解ALU内部结构与算术逻辑运算实现。包内共三百九十三个文件,以ISE工程及原理图为主,包括sch原理图、sym符号、v和c…

作者头像 李华