Install
openclaw skills install @thcjp/python-dataviz-tool-freeopenclaw skills install @thcjp/python-dataviz-tool-freePython 数据可视化工具免费版使用 matplotlib、seaborn、plotly 三大主流库创建专业图表。支持柱状图、折线图、散点图、饼图、直方图、热力图等常见图表类型,适合数据分析、报告制作与学术绘图.
全控制静态图表,支持多面板、自定义样式、标注注释,导出 PNG/SVG/PDF.
处理: 解析matplotlib 静态图表的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回matplotlib 静态图表的响应数据,包含状态码、结果和日志.
input_params参数,支持创建/查询/导出操作内置美观默认样式,支持分布图、分类图、关系图、矩阵图等统计可视化.
处理: 解析seaborn 统计可视化的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回seaborn 统计可视化的响应数据,包含状态码、结果和日志.
input_params参数,支持创建/查询/导出操作支持悬停提示、缩放、平移,可导出 HTML 交互式页面.
处理: 解析plotly 交互式图表的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回plotly 交互式图表的响应数据,包含状态码、结果和日志.
input_params参数,支持创建/查询/导出操作灵活的多面板布局,支持 2x2、3x3 等网格排列.
处理: 解析多子图布局的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回多子图布局的响应数据,包含状态码、结果和日志.
input_params参数,支持创建/查询/导出操作支持 CSV 文件、Python 字典、NumPy 数组、pandas DataFrame.
处理: 解析多数据源支持的输入参数,完成核心逻辑,返回结构化响应.
输出: 返回多数据源支持的响应数据,包含状态码、结果和日志.
技术参数:使用input_params和output_format参数控制执行行为,支持json/text/csv输出格式.
能力覆盖范围:本skill的核心能力覆盖以下场景关键词:创建专业图表、支持柱状图、折线图、散点图与热力图、数据可视化工具免、面向个人开发者与、数据分析师、核心能力、小提琴、KDE、多子图布局与样式等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持.
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| input | string | 是 | Python数据可视化-免费版处理的输入数据或指令 |
| options | object | 否 | 附加配置选项,如模式选择、格式偏好等 |
| callback_url | string | 否 | 异步处理完成后的回调通知URL |
import pandas as pd
import matplotlib.pyplot as plt
# ...
# 读取 CSV 数据
df = pd.read_csv('sales_data.csv')
# ...
# 创建折线图
plt.figure(figsize=(10, 6))
plt.plot(df['date'], df['revenue'], linewidth=2, color='#667eea')
plt.title('月度营收趋势', fontsize=16, fontweight='bold')
plt.xlabel('日期')
plt.ylabel('营收 (元)')
plt.grid(alpha=0.3)
plt.xticks(rotation=45)
plt.tight_layout()
# ...
plt.savefig('revenue_trend.png', dpi=300, bbox_inches='tight')
import seaborn as sns
import matplotlib.pyplot as plt
# ...
# 设置样式
sns.set_theme(style="whitegrid")
sns.set_palette("husl")
# ...
# 示例
tips = sns.load_dataset("tips")
# ...
# 创建箱线图
plt.figure(figsize=(8, 6))
sns.boxplot(data=tips, x='day', y='total_bill')
plt.title('每日账单分布')
plt.savefig('bill_distribution.png', dpi=300)
import plotly.express as px
import pandas as pd
# ...
# 创建数据
df = pd.DataFrame({
'产品': ['A', 'B', 'C', 'D'],
'销量': [120, 180, 90, 150],
'利润': [30, 45, 20, 38]
})
# ...
# 创建交互式散点图
fig = px.scatter(df, x='销量', y='利润', text='产品',
title='产品销量与利润关系')
fig.update_traces(textposition='top center')
fig.write_html('product_scatter.html')
以下场景Python数据可视化-免费版不适合处理:
需要数据分析、报表生成、统计洞察、数据可视化时使用。不适用于非本工具能力范围的需求.
# 创建虚拟环境
python3 -m venv .venv
source .venv/(请参考skill目录中的脚本文件) # Linux/macOS
# .venv\Scripts\activate # Windows
# ...
# 依赖说明
pip install matplotlib seaborn plotly pandas numpy
import matplotlib.pyplot as plt
import numpy as np
# ...
# 生成数据
x = np.linspace(0, 10, 100)
y = np.sin(x)
# ...
# 绘图
plt.figure(figsize=(10, 6))
plt.plot(x, y, linewidth=2, color='#667eea')
plt.title('正弦波', fontsize=16)
plt.xlabel('X 轴')
plt.ylabel('Y 轴')
plt.grid(alpha=0.3)
plt.tight_layout()
# ...
# 保存
plt.savefig('sine_wave.png', dpi=300, bbox_inches='tight')
plt.savefig('sine_wave.svg', bbox_inches='tight')
| 数据关系 | 推荐图表 | 函数 |
|---|---|---|
| 趋势变化 | 折线图 | plt.plot() / sns.lineplot() |
| 数值比较 | 柱状图 | plt.bar() / sns.barplot() |
| 相关性 | 散点图 | plt.scatter() / sns.scatterplot() |
| 占比 | 饼图 | plt.pie() |
| 分布 | 直方图/KDE | plt.hist() / sns.kdeplot() |
| 统计分布 | 箱线/小提琴 | sns.boxplot() / sns.violinplot() |
| 矩阵数据 | 热力图 | sns.heatmap() |
| 回归关系 | 回归图 | sns.regplot() / sns.lmplot() |
# 设置 seaborn 主题
sns.set_theme()
sns.set_style("whitegrid") # whitegrid, darkgrid, white, dark, ticks
sns.set_palette("deep") # deep, muted, pastel, bright, dark, colorblind
# ...
# 设置 matplotlib 样式
plt.style.use('seaborn-v0_8-darkgrid') # ggplot, bmh, fivethirtyeight
# ...
# 自定义颜色
colors = ['#667eea', '#764ba2', '#f6ad55', '#4299e1']
# PNG(适合网页)
plt.savefig('chart.png', dpi=300, bbox_inches='tight')
# ...
# SVG(适合矢量编辑)
plt.savefig('chart.svg', bbox_inches='tight')
# ...
# PDF(适合打印)
plt.savefig('chart.pdf', bbox_inches='tight')
# ...
# 透明背景
plt.savefig('chart.png', dpi=300, transparent=True)
plt.tight_layout() 防止标签截断savefig 时设置 bbox_inches='tight' 避免内容裁剪colorblind)plt.rcParams['font.sans-serif'] = ['SimHei']A: 配置 matplotlib 中文字体。plt.rcParams['font.sans-serif'] = ['SimHei'](Windows)或 ['Arial Unicode MS'](macOS)。同时设置 plt.rcParams['axes.unicode_minus'] = False 解决负号显示问题.
A: 在 savefig 前调用 plt.tight_layout(),并添加 bbox_inches='tight' 参数.
A: 需要安装 kaleido 包(pip install kaleido),然后使用 fig.write_image('chart.png') 导出.
A: 使用 plt.subplots(rows, cols) 创建多子图。例如 fig, axes = plt.subplots(2, 2, figsize=(12, 10)) 创建 2x2 布局.
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| Python 3 | 运行时 | 必需 | 官方网站下载 |
| matplotlib | 绘图库 | 必需 | pip install matplotlib |
| seaborn | 统计绘图 | 推荐 | pip install seaborn |
| plotly | 交互绘图 | 推荐 | pip install plotly |
| pandas | 数据处理 | 推荐 | pip install pandas |
| numpy | 数值计算 | 必需 | pip install numpy |
| kaleido | plotly导出 | 可选 | pip install kaleido |
| LLM API | API | 必需 | 由Agent内置LLM提供 |
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |
输出:返回执行结果,包含操作状态和输出数据
用户: 执行核心功能
Skill: 正在执行核心功能...
Skill: 执行完成,结果如下: 操作成功
{
"success": true,
"data": {
"result": "Python数据可视化-免费版处理结果",
"execution_time": "0.5s",
"metadata": {
"version": "1.0",
"processor": "python dataviz"
}
},
"execution_log": ["解析输入参数", "执行核心处理", "格式化输出结果"],
"error": null
}