Deepseek+python - 自动图表生成
Deepseek不支持直接自动绘制图表,但支持生成图表代码,如python、mermaid、html,支持对图表内容进行修改。
复制代码到在本地python等环境运行,就生成可视化图表。
用户可以定制其他组件,对接数据平台,一键嵌入报告、PPT。
示例如下
1 准备数据
这里通过deepseek实现,保存为csv,也可以直接对接数据源。
prompt如下
请联网搜索2024年小米、比亚迪、特斯拉、奇瑞、吉利、广汽、大众等品牌新能源车的销量,以csv的格式输出。
品牌,2024年销量(万辆),同比增长(%),主要畅销车型
小米,12.5,-,SU7
比亚迪,320,25,秦PLUS DM-i/海豚/宋Pro DM-i
特斯拉,180,15,Model Y/Model 3
奇瑞,98,40,QQ冰淇淋/小蚂蚁/eQ7
吉利,150,35,极氪001/银河L7/几何E
广汽,85,22,Aion Y/Aion S
大众,75,18,ID.4/ID.3
2 图表代码和对应图表
基于上述csv数据,使用柱状图和饼图展示,prompt如下
请整理并分析上传的数据,生成数据看板,包括标题,不同品牌销售数据柱状图和看板、品牌份额饼图和技术卖点分布条形图。以 python形式输出,要求选用在mac能正常显示的字体。
deepseek生成的python代码和运行python生成的图表
import matplotlib.pyplot as plt
import pandas as pd
from matplotlib import rcParams# 设置中文字体,确保在Mac上正常显示
rcParams['font.family'] = 'Arial Unicode MS'# 读取数据
data = pd.read_csv('evcar2024.csv')# 创建画布
plt.figure(figsize=(16, 6))# 绘制柱状图(左侧)
plt.subplot(1, 2, 1)
bars = plt.bar(data['品牌'], data['2024年销量(万辆)'], color='skyblue')
plt.title('2024年各品牌电动汽车销量(万辆)', fontsize=14)
plt.xlabel('品牌', fontsize=12)
plt.ylabel('销量(万辆)', fontsize=12)
plt.xticks(rotation=45, ha='right')
plt.grid(axis='y', linestyle='--', alpha=0.7)# 在柱状图上添加数值标签
for bar in bars:height = bar.get_height()plt.text(bar.get_x() + bar.get_width() / 2., height,f'{height}',ha='center', va='bottom', fontsize=10)# 绘制饼图(右侧)
plt.subplot(1, 2, 2)
plt.pie(data['2024年销量(万辆)'], labels=data['品牌'], autopct='%1.1f%%',startangle=140, colors=plt.cm.Pastel1.colors)
plt.title('2024年各品牌电动汽车销量占比', fontsize=14)# 调整布局
plt.tight_layout()# 显示图表
plt.show()
3 进一步对图表进行修改
prompt如下
请对该图表进行修改,以Python 源程序格式输出:
1. 增加总标题 “2024年度旗新能源车销量分析”,将子图标题分别修改为“旗舰新能源车销量榜单”和“旗舰新能源车市场份额”;
2. 请使用能在mac下正常显示的中文字体。
deepseek生成的python代码和运行python生成的图表
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
from matplotlib.ticker import FuncFormatter
import numpy as np# 设置Mac兼容的中文字体
try:# 尝试使用苹方字体(PingFang SC),这是Mac系统自带的中文字体plt.rcParams['font.sans-serif'] = ['PingFang SC']
except:# 如果苹方不可用,则尝试使用Arial Unicode MSplt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题# 创建数据
data = {'品牌': ['小米', '比亚迪', '特斯拉', '奇瑞', '吉利', '广汽', '大众'],'2024年销量(万辆)': [12.5, 320, 180, 98, 150, 85, 75],'同比增长(%)': [np.nan, 25, 15, 40, 35, 22, 18],'主要畅销车型': ['SU7', '秦PLUS DM-i/海豚/宋Pro DM-i', 'Model Y/Model 3', 'QQ冰淇淋/小蚂蚁/eQ7', '极氪001/银河L7/几何E', 'Aion Y/Aion S', 'ID.4/ID.3']
}df = pd.DataFrame(data)# 创建画布
plt.figure(figsize=(16, 10))
plt.suptitle('2024年度旗舰新能源车销量分析', fontsize=20, y=1.05, fontweight='bold')# 1. 销量柱状图
plt.subplot(1, 2, 1)
bars = plt.bar(df['品牌'], df['2024年销量(万辆)'], color=plt.cm.tab20(range(len(df))))
plt.title('旗舰新能源车销量榜单', fontsize=16, pad=20)
plt.ylabel('销量(万辆)', fontsize=12)
plt.xticks(rotation=45, ha='right')
plt.grid(axis='y', linestyle='--', alpha=0.7)# 在柱子上添加数值
for bar in bars:height = bar.get_height()plt.text(bar.get_x() + bar.get_width()/2., height,f'{height:.1f}',ha='center', va='bottom', fontsize=10)# 2. 市场份额饼图
plt.subplot(1, 2, 2)
total_sales = df['2024年销量(万辆)'].sum()
df['市场份额'] = df['2024年销量(万辆)'] / total_sales * 100
df_sorted = df.sort_values('市场份额', ascending=False)# 只显示前5大品牌,其余合并为"其他"
top5 = df_sorted.head(5)
other = pd.DataFrame({'品牌': ['其他'],'市场份额': [df_sorted['市场份额'][5:].sum()]
})
pie_df = pd.concat([top5, other])# 自定义颜色
colors = ['#FF9999', '#66B2FF', '#99FF99', '#FFCC99', '#c2c2f0', '#FFB6C1']wedges, texts, autotexts = plt.pie(pie_df['市场份额'], labels=pie_df['品牌'], autopct='%1.1f%%',startangle=90,colors=colors,textprops={'fontsize': 12})plt.title('旗舰新能源车市场份额', fontsize=16, pad=20)
plt.setp(autotexts, size=12, weight="bold") # 设置百分比文字样式# 添加图例
plt.legend(wedges, pie_df['品牌'],title="品牌",loc="center left",bbox_to_anchor=(1, 0, 0.5, 1))plt.tight_layout()
plt.show()
python绘制的图表还比较初级,可以让deepseek生成HTML或Mermaid,在Cherry Studio或Mermaid环境生成更专业的可视化图表。
reference
---
1. deepseek. https://chat.deepseek.com/
2. python matplotlib