【DeepSeek应用】用 DeepSeek 轻松玩转可视化图表(1)

【DeepSeek应用】Deepseek R1 本地部署(Ollama+Docker+OpenWebUI)
【DeepSeek应用】DeepSeek 搭建个人知识库(Ollama+CherryStudio)
【DeepSeek应用】用 DeepSeek 轻松玩转可视化图表(1)
【DeepSeek应用】用 DeepSeek 轻松玩转可视化图表(2)



1. 为什么用 Deepseek 制作可视化图表

在数据驱动的时代,图表已成为表达观点、支持决策的必备工具。传统数据可视化的痛点在于,学习门槛高,维护成本大、交互能力弱。

目前,DeepSeek Chat 还不支持直接绘制图表、输出图像,但可以生成 图表代码,复制这些代码到在本地环境运行,就生成可视化图表。此外,一些第三方工具和软件(如 VS Code、Mermaid、Cherry Studio)可以结合 DeepSeek 生成的结构化文本或代码,进一步渲染成可视化图表。

基于 Deepseek 制作可视化图表带来变革,让我们可以“一句话生成专业图表”。

  • 自然语言驱动:只需描述需求,自动生成图表
  • 多输出模式:支持HTML、Python代码、Mermaid流程图、企业级BI仪表盘
  • 无缝衔接工作流:一键嵌入报告、PPT,或对接数据平台

为了便于读者学习,我们还是继续使用 “CherryStudio + 硅基流动/Deepseek API” 作为工具示范本文部内容。CherryStudio 是一款 AI 助手平台, 硅基流动平台 提供了 DeepSeek 模型的接入服务,适合需要稳定性和多样化模型的用户。使用邀请码 SM5lc4SJ 注册 硅基流动平台,即可获赠 2000 万 Tokens!

关于 “CherryStudio + 硅基流动/Deepseek API” 的安装使用,请参见我的博客 【DeepSeek应用】DeepSeek 搭建个人知识库(Ollama+CherryStudio)


2. Deepseek 生成 HTML 制作可视化图表

传统的 HTML/JavaScript 图表开发面临技术门槛高、调试周期长的困难。基于 Deepseek 自动生成 HTML 代码,支持通过自然语言指令直接生成交互式可视化代码,快速生成可嵌入网页、博客或PPT 的动态图表,不仅显著降低了技术门槛,而且极大地提高了开发效率,特别适用于快速构建可交互数据看板。

Deepseek-HTML 自动生成方案的典型工作流程包含以下步骤:

  1. 数据需求描述:用户输入结构化需求说明,推荐采用"图表类型+数据特征+样式需求"的表述方式。
  2. 代码自动生成:系统自动生成完整 HTML/CSS/JavaScript 代码包,包含模块化封装的图表组件和详细的 API 注释。
  3. 迭代优化:用户可以通过补充指令进行功能扩展或样式微调。

2.1 自然语言指令生成可视化图表

直接通过文本描述数据内容和需求,生成 HTML 代码。

  1. 输入自然语言指令
    明确数据、图表类型和交互需求。
    示例指令:

“用折线图展示三种产品 A、B、C 在 2024年每月销售额,X轴为月份,Y轴为金额(万元),浅色背景,图表宽度占满容器。数据要有起伏。请生成HTML代码。”

  1. 获取 Deepseek 生成的 HTML 代码
    系统自动输出完整代码如下。
<!DOCTYPE html>
<html>
<head>
    <title>2024A/B/C产品月销售额</title>
    <!-- 引入 Plotly -->
    <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
    <style>
        body {
    
    
            margin: 0;
            padding: 20px;
            font-family: Arial, sans-serif;
        }
        #chart {
    
    
            width: 100%;
            height: 500px;
            background: #f9f9f9;
            border-radius: 8px;
            padding: 15px;
            box-sizing: border-box;
        }
    </style>
</head>
<body>
    <h2>2024年产品A/B/C销售额趋势(万元)</h2>
    <div id="chart"></div>

    <script>
        // 模拟数据(每月随机的销售额)
        const months = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'];
        const data = {
    
    
            "A": [25, 32, 28, 35, 40, 38, 42, 50, 45, 55, 60, 65],
            "B": [15, 20, 25, 30, 22, 28, 35, 40, 38, 42, 45, 50],
            "C": [10, 12, 15, 18, 22, 25, 30, 28, 32, 35, 38, 40]
        };

        // 创建图表
        const traces = [
            {
    
    
                x: months,
                y: data["A"],
                name: '产品A',
                mode: 'lines+markers',
                line: {
    
     color: '#4285F4', width: 3 },
                marker: {
    
     size: 8 }
            },
            {
    
    
                x: months,
                y: data["B"],
                name: '产品B',
                mode: 'lines+markers',
                line: {
    
     color: '#EA4335', width: 3 },
                marker: {
    
     size: 8 }
            },
            {
    
    
                x: months,
                y: data["C"],
                name: '产品C',
                mode: 'lines+markers',
                line: {
    
     color: '#FBBC05', width: 3 },
                marker: {
    
     size: 8 }
            }
        ];

        const layout = {
    
    
            plot_bgcolor: '#f9f9f9',
            paper_bgcolor: '#f9f9f9',
            margin: {
    
     l: 60, r: 30, t: 50, b: 50 },
            xaxis: {
    
     title: '月份', gridcolor: '#ddd' },
            yaxis: {
    
     title: '销售额(万元)', gridcolor: '#ddd' },
            legend: {
    
     orientation: 'h', x: 0.3, y: 1.2 },
            hovermode: 'closest'
        };

        // 绘制图表
        Plotly.newPlot('chart', traces, layout);

        // 自适应窗口大小
        window.addEventListener('resize', function() {
    
    
            Plotly.Plots.resize('chart');
        });
    </script>
</body>
</html>

如果直接在浏览器中向 Deepseek 提出这个问题,Deepseek 还会提示:“你可以直接复制这段代码保存为 .html 文件后用浏览器打开,或者嵌入到你的网页中。如需修改数据,只需调整 data.datasets[0].data 数组中的数值即可。”

如果我们使用 "CherryStudio + 硅基流动/Deepseek API " 的聊天助手,则会出现 “预览”、“外部浏览器打开”、“下载” 三个按钮。点击 “预览” 可以在 CherryStudio 预览生成的图表,点击 “外部浏览器打开” 可以在浏览器中运行代码并显示生成的图表、点击 “下载” 可以保存生成的 HTML 代码文件。


在这里插入图片描述

在这里插入图片描述


2.2 导入数据文件生成可视化图表

通过文本描述生成数据文件,及导入数据文件生成可视化图表的 HTML 代码。

  1. 通过文本描述生成数据文件
    示例指令:“请联网搜索 2023年 中国内地 TOP10 手机型号的销售数据,以 csv 格式输出。”
    点击“<csv>” 之后的 “保存” 按钮,将输出结果保存为数据文件 “202504131402.csv”。

使用 "CherryStudio + 硅基流动/Deepseek API " 的聊天助手,则会出现 “预览”、“外部浏览器打开”、“下载” 三个按钮。点击 “预览” 可以在 CherryStudio 预览生成的图表,点击 “外部浏览器打开” 可以在浏览器中运行代码并显示生成的图表、点击 “下载” 可以保存生成的 HTML 代码文件。

在这里插入图片描述


  1. 导入数据文件,生成可视化图表的 HTML 代码。
    (1)点击对话框工具栏中曲别针形状的 “打开文件”按钮,从文件夹中选中数据文件(如 202504131402.csv),对话框中将显示导入的文件图标。
    (2)输入绘图要求指令,明确数据、图表类型和交互需求:“请整理并分析上传的数据,生成数据看板,包括标题,TOP10机型销售数据柱状图和看板、品牌份额饼图和技术卖点分布条形图。以 HTML 形式输出。”

在这里插入图片描述

在输出代码的下方,点击 “预览” 可以在 CherryStudio 预览生成的图表,如下图所示。

在这里插入图片描述
在这里插入图片描述


  1. 根据需求进行优化调整。
    通过语言提示,提出优化调整数据看板的需求:“请根据要求优化数据看板,重新输出 HTML代码。1、显示TOP10机型销售数据 环形图,核心技术卖点条形图,2、分左右两个图表,在同一页面显示,3、保留销售数据表格不变。”

在这里插入图片描述


3. Deepseek 生成 Python 程序制作可视化图表

使用 Python 语言中的 Matplotlib 库可以生成高质量的可视化图表,但学习 Matplotlib 需要需要记忆很多 API 函数和参数,手动调整图表样式,制作多子图组合或交互式图表更是需要较高的编程能力。

基于 Deepseek 自动生成 Python 程序制作可视化图表,直接采用自然语言接口,用户仅需描述数据类型、图表类型和定制化需求,系统即可自动生成完整的 Python 代码,从而显著降低了技术门槛,而且极大地提高了开发效率。

Deepseek-Python 自动生成方案的典型工作流程包含以下步骤:

  1. 数据需求描述:用户结构化说明数据来源和图表要求,推荐采用"图表类型+数据特征+样式需求"的表述方式。
  2. 代码自动生成:系统自动生成匹配的 Python 代码。
  3. 代码调试:将生成的 Python 代码复制到 IDE 中进行调试,如果报错可以将报错信息复制并发给 Deepseek 来修改代码。
  4. 迭代优化:用户可以通过补充指令进行功能扩展或样式微调,迭代优化图表质量。

3.1 导入数据文件生成 Python 程序

  1. 导入数据文件,描述图表需求。
    以上文中的 “202504131402.csv” 文件为例导入数据。
    (1)点击对话框工具栏中曲别针形状的 “打开文件”按钮,从文件夹中选中数据文件(如 202504131402.csv),对话框中将显示导入的文件图标。
    (2)输入绘图要求指令,明确数据、图表类型和交互需求:“请整理并分析上传的数据,使用 Python 的 matplotlib 库绘制图表。要求如下:1. 绘制一个柱状图和一个饼图,左右排列;2. 图表包含标题、图例、刻度等元素,字体与图表大小协调;3. 输出格式为 Python 源程序,包括代码注释,直接显示图表,不要带有其它解读内容。4. 输出前检查代码准确可执行,避免语法错误。5. 注意数据文件和输出图表中可能包含中文字符。”

在这里插入图片描述


  1. 自动生成 Python 代码。
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import pandas as pd
from matplotlib import rcParams

# 设置中文字体和负号显示
rcParams['font.sans-serif'] = ['SimHei']  # Windows系统常用字体
rcParams['axes.unicode_minus'] = False  # 解决负号显示问题


def load_and_preprocess():
    """数据加载与预处理"""
    data = pd.read_csv('202504131402.csv', encoding='utf-8')
    # 清洗百分比数据
    data['市场份额(%)'] = data['市场份额(%)'].str.replace('%', '').astype(float)
    return data


# 主绘图函数
def create_dual_chart(data):
    """创建双图布局"""
    plt.figure(figsize=(18, 7), dpi=100)

    # ========== 柱状图 (左) ==========
    ax1 = plt.subplot(1, 2, 1)
    bars = ax1.bar(
        data['型号'],
        data['2023年总销量(万台)'],
        color=plt.cm.tab20.colors[:len(data)],
        alpha=0.7
    )

    # 图表装饰
    ax1.set_title('2023年度旗舰手机销量TOP10', fontsize=16, pad=20)
    ax1.set_xlabel('机型型号', fontsize=12)
    ax1.set_ylabel('销量(万台)', fontsize=12)
    ax1.tick_params(axis='x', rotation=45, labelsize=10)
    ax1.grid(axis='y', linestyle='--', alpha=0.6)

    # 添加数据标签
    for bar in bars:
        height = bar.get_height()
        ax1.text(
            bar.get_x() + bar.get_width() / 2.,
            height + 20,
            f'{
      
      int(height)}',
            ha='center',
            va='bottom',
            fontsize=9
        )

    # ========== 饼图 (右) ==========
    ax2 = plt.subplot(1, 2, 2)
    wedges, texts, autotexts = ax2.pie(
        data['市场份额(%)'],
        labels=data['型号'],
        autopct='%1.1f%%',
        startangle=90,
        counterclock=False,
        colors=plt.cm.tab20.colors[:len(data)],
        textprops={
    
    'fontsize': 9},
        pctdistance=0.85,
        wedgeprops={
    
    'width': 0.4, 'edgecolor': 'white'}
    )

    # 饼图装饰
    ax2.set_title('市场份额分布', fontsize=16, pad=20)
    plt.setp(autotexts, size=9, weight='bold')

    # 添加图例(放在饼图右侧)
    plt.legend(
        wedges,
        data['型号'],
        title="机型列表",
        loc="center left",
        bbox_to_anchor=(1, 0, 0.5, 1),
        fontsize=9
    )

    # 调整布局
    plt.tight_layout(pad=3.0)
    plt.show()


# 执行程序
if __name__ == "__main__":
    df = load_and_preprocess()
    create_dual_chart(df)

  1. 调试和运行 Python 代码。
    (1)将生成的代码复制到 PyCharm 中编译和运行。注意要确保读取的 .csv文件位于同一目录下。
    (2)如果报错可以将报错信息复制并发给 Deepseek 来修改代码。
    程序运行结果如下图所示。

请添加图片描述

请添加图片描述

  1. 优化微调。
    对于图中的任何修改,都可以以自然语言描述方式输入。
    例如:“请对该图表进行修改,以Python 源程序格式输出:1. 增加总标题 “2023年度旗舰手机销量分析”,将子图标题分别修改为“旗舰手机销量 TOP10”和“旗舰手机市场份额”;2. 取消右侧饼图中的 “机型列表” 图例;3. 将图中的标注字体修改为 “宋体/TimesNewRoman”。”
    运行 Deepseek 输出的修改程序,结果如下图所示。

在这里插入图片描述


版权声明:
[email protected] 原创作品,转载必须标注原文链接:
[【DeepSeek应用】用 DeepSeek 轻松玩转可视化图表(1)
Copyright@youcans 2025
Crated:2025-04