1、环境准备与依赖安装
在开始实现 AI 图表生成之前,必须确认你的 PHP 环境具备基础的网络请求能力与数据处理能力。要点包括PHP版本、cURL扩展、Composer安装与常用库的引入,这将直接影响后续的数据获取、AI 调用以及图表渲染的稳定性。
本节将展示如何搭建本地开发环境,并通过 Composer 引入 OpenAI 客户端以及准备快速图表服务所需的接口。在这一阶段,关键目标是确保服务器能够对外发起 HTTP 请求并正确处理 JSON,以便与 AI 服务和图表渲染服务对接。
1.1 安装 Composer 与依赖
Composer 是 PHP 的包管理工具,负责安装 OpenAI 客户端及其他依赖。确保系统已安装 PHP 7.4+,并具备 curl、json 等扩展。
# 安装 Composer(若已安装可忽略)
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
php -r "unlink('composer-setup.php');"# 引入 OpenAI 客户端(示例依赖,实际选型以项目为准)
composer require openai/client
安装完成后,确保全局可用的 composer.json 已就绪,以便后续更新与依赖管理。
1.2 本地服务器与 PHP 配置
为了实现稳定的请求和图表渲染,请确认你的本地或服务器环境具备以下配置:开启 allow_url_fopen、开启 curl 扩展、设置合理的内存与执行时间,以及网络访问外部 API 的权限。
若你使用 Apache/Nginx,请配置正确的虚拟主机与 DocumentRoot,确保能够通过浏览器访问 PHP 脚本并看到输出内容。这一步是后续数据抓取、AI 调用和图表渲染的前置条件。
2、数据采集与预处理
数据是 AI 图表生成的核心。通过读取 CSV/JSON 等通用格式,我们可以获得稳定的输入数据,然后让 AI 辅助生成图表的配置与洞察。本章节聚焦数据源、格式统一和前处理步骤,为后续的图表渲染打好基石。
在实际应用中,常见数据来源包括本地 CSV、数据库查询结果或远程 API。统一字段、清理缺失值、进行简单聚合是关键的预处理工作,它将直接影响图表的可读性与分析结论。
2.1 数据源与格式
选择稳定的数据源是第一步。对于示例,我们可以使用 CSV 文件保存时间序列数据,字段包括日期、销售额、成本等。保持列名简洁、确保日期格式统一,有利于后续 AI 解析与图表映射。
注意:若数据量较大,建议分批加载或聚合后再进入 AI 生成阶段,以提升响应速度和稳定性。
2.2 读取示例与数据清洗
读取后进行简单清洗,如去重、填充缺失、类型转换等。确保日期字段转为标准时间戳,数值字段转为浮点数,以便后续的数值分析与可视化。
经过预处理后,数据结构更加规则,AI 端的提示和图表配置也能够获得更精准的输入。
3、AI 驱动的图表配置与洞察
本阶段核心在于通过 AI 生成图表的配置对象(如 QuickChart 的 chart 配置)以及对数据的洞察性描述。利用 OpenAI 等大模型的能力,可以快速获得清晰的洞察、趋势标注与图表结构,从而实现“AI 图表生成”的目标。
设计合理的提示语,是实现高质量输出的关键。提示应包含数据字段含义、时间区间、所需图表类型、指标的含义及美观性要求,以及对输出格式的约束(如 JSON 配置对象)以便下一步直接使用。
3.1 AI 提示设计
一个有效的提示应明确数据结构和期望输出,例如:希望输出一个符合 QuickChart 配置格式的 JSON 字符串,包含数据集、坐标轴、标题、颜色等信息。下面是一个示例提示模板的要点:指出数据字段、时间范围、图表类型(如折线图、柱状图)、单位以及需要的显著注释。
要点示例(自然语言描述+JSON需求):
- 数据字段:date、sales、cost
- 时间范围:最近12个月
- 图表类型:折线图,双系列
- 配置输出:JSON 字符串,直接可作为 chartConfig 使用(如 QuickChart)
将提示写入程序后发送给 AI,以获得可直接使用的图表配置。
3.2 调用 OpenAI API 生成图表配置
通过 OpenAI 的 API 请求,获得一个符合 QuickChart 配置的 JSON 内容。以下示例使用 CURL 请求方式,便于在任意 PHP 应用中复用。
'gpt-3.5-turbo','messages' => [['role' => 'user', 'content' => $prompt]]
];
$ch = curl_init('https://api.openai.com/v1/chat/completions');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json','Authorization: Bearer ' . $apiKey
]);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
curl_close($ch);// 提取 JSON 配置
$decoded = json_decode($res, true);
$configJson = $decoded['choices'][0]['message']['content'] ?? '';
// 如有多余字符,可在此处先进行清洗
echo $configJson;
?>
得到 configJson 后,务必进行 JSON 解析与校验,确保输出为有效的 JSON 来用于后续的图表渲染。
3.3 将 AI 输出转为可使用的图表配置
AI 端返回的内容通常需要二次处理,以确保它是一个合法的 JSON 对象,并且符合 QuickChart 的 schema。使用 json_decode 确认结构,并在失败时回退到一个默认配置。
'bar','data' => ['labels' => [], 'datasets' => []],'options' => ['title' => ['display' => true, 'text' => '示例图表']]];
}
?>
4、使用 QuickChart 通过配置生成图表
QuickChart 是一个简单的云端图表渲染服务,你可以把图表配置对象直接传给它,获取到图像、SVG 或链接。本节展示如何把 AI 生成的配置转化为可下载的图片与可嵌入网页的资源。
通过将配置对象序列化为 URL 编码参数,我们就能请求到一个图像资源,这在无头服务器或需要生成报表图片时尤为有用。
4.1 构造 Chart 配置与请求图像
将 AI 输出的配置数组序列化并拼接到 QuickChart 的请求地址中,注意对 JSON 进行 URL 编码以确保传输正确。
';
?>
另外,你也可以直接在网页中使用<img src="https://quickchart.io/chart?c=..." />来嵌入,便于无后端渲染的页面静态展示。
4.2 生成并保存图片及缓存管理
为了提升性能,可以将生成的图像缓存到服务器并在前端使用静态链接。缓存策略应包含有效期、版本号以及数据源标识,以避免图像过期或数据不同步。
';
} else {// 上一步已生成图像,这里仅作保险检查echo '图表尚未生成,请先执行前面的步骤。
';
}
?>5、将 AI 图表输出到网页与自动化流程
在实际应用中,图表不仅仅是静态图片,还可以作为网页组件的一部分、导出为 PDF 报告或嵌入到仪表盘中。本节将介绍如何在网页中动态加载图表、以及将生成流程自动化到工作流中。

将生成的图表作为网页组件嵌入时,请确保 HTTP 路径、权限和跨域策略正确配置,避免图片加载失败。如果需要自动化生成报表,可以将 AI 画图和图表导出步骤放入任务队列,提高工作流的可重复性。
5.1 动态嵌入网页
将生成的图片 URL 动态注入到 HTML 中,用户无需刷新即可看到最新的图表。使用标准 img 标签或 canvas 渲染路径,确保图片加载完成后再执行后续分析。
';
?>
若要实现无刷新更新,可通过 AJAX 请求刷新图片源,保持仪表盘的实时性。
5.2 自动化导出与报告
可以把生成的图表集成到 PDF、PPT 等报表中。将图像路径和相关元数据(标题、时间范围、数据源)打包成可复用的模板,并在定时任务中调用。以下代码示例演示了将图像与元数据导出为一个简单报表结构。
'AI 驱动数据可视化报表','date' => date('Y-m-d H:i:s'),'charts' => [['image' => '/public/chart_ai.png','caption' => '最近12个月的销售与成本趋势']]
];
file_put_contents(__DIR__ . '/public/report.json', json_encode($report, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
?>
6、完整示例与集成代码
以下为一个简化的端到端示例,展示数据读取、AI 提示、OpenAI 调用、图表配置与图表渲染的串联过程。请将占位符替换为实际路径和 API KEY,并确保服务器具备外部请求能力。
核心流程包括:读取数据、AI 生成图表配置、将配置传给 QuickChart、下载并在网页中展示图表,整体便于迁移为小型数据分析仪表盘或包含 AI 洞察的报表系统。
'line','data' => ['labels' => array_column($rows, 'date'), // 时间轴'datasets' => [['label' => 'Sales','data' => array_column($rows, 'sales'),'borderColor' => 'rgba(75, 192, 192, 1)','fill' => false],['label' => 'Cost','data' => array_column($rows, 'cost'),'borderColor' => 'rgba(255, 99, 132, 1)','fill' => false]]],'options' => ['title' => ['display' => true, 'text' => '销售与成本趋势'],'scales' => ['x' => ['type' => 'time', 'time' => ['unit' => 'month']]]]
];
$configJsonSafe = json_encode($config);
$chartUrl = 'https://quickchart.io/chart?c=' . urlencode($configJsonSafe);
$image = file_get_contents($chartUrl);
$imagePath = __DIR__ . '/public/chart_ai.png';
file_put_contents($imagePath, $image);// 4) 输出网页图表
echo '
';
?>
通过上述流程,你已经完成了“数据可视化完整教程与代码示例”的核心实现路径:从数据获取到 AI 辅助的图表配置,再到图表渲染与网页展示,实现了在 PHP 环境中的完整 AI 图表生成能力。


