ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Claude Code 跑 Dumbbell Plot 增长排序:Key 用 TaoToken

Claude Code 跑 Dumbbell Plot 增长排序:Key 用 TaoToken 假设你正照着原文那份电商数据用 matplotlib 练手8 个产品类别2022 年和 2023 年两列销售额要先画簇状条形图再画哑铃图最后按增长幅度排序。让 Claude Code 来生成排序列与哑铃图代码Key 从 TaoToken 拿https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_content 注册并按提示创建 API Key。原文第 3 节手工做了一张 8 品类 Dumbbell Plot连接线用循环逐个画增长画绿线、下降画红线还要在底下添加变化箭头标注。这个流程单独看不难但当品类列表从 3 个涨到 8 个你在循环里既要判断颜色又要盯着每个点的 y 坐标是否对齐还要记住哪个品类是负增长出错率会明显上升。本文按原文同样的数据、同样的排序方法重做一遍但把绘制连接线、设置颜色这两步交给 Claude Code 完成你只需要把模型 Base URL 填成 https://taotoken.net/api。TaoToken 在本文只承担一件事给你能创建 Key 的控制台。1. 为什么 8 个品类一排序手工画图就容易看错1.1 哑铃图的读法两点之间看变化哑铃图是同一观察单位在两个时间点或两个状态下的数值对比图。每个品类占一行左右各一个点点的水平位置对应销售额两点之间画一条线段线段越长说明变化越大线段从左向右说明增长从右向左说明下降。原文用 8 个产品类别做例子电子产品从 85 万涨到 95 万服装鞋帽从 92 万降到 87 万家居用品从 78 万涨到 85 万。数据本身不复杂复杂的是“同时看 8 行”。原文第 2 节把实现原理拆成三块散点图负责画两年数值直线段负责连接两个相关点颜色编码负责区分增长和下降再配合标签系统标注品类名。原理没有难点难点在于当 8 个品类同时放进一张图你的眼睛要先找到每条线的两端再判断颜色再对应品类名最后还要比较不同线段的长短。这一套动作手工做很容易累。1.2 手工代码的三个注意力陷阱原文第 3 节给出的代码里隐藏着三个容易看错的地方。第一个是排序索引与品类对应。原文用np.argsort按变化幅度排序拿到的是索引数组后面取categories[i]、sales_2022[i]、sales_2023[i]时三处索引必须对齐同一个排序结果。手工写的时候稍微换错一个变量品类名和数值就错位了但图形看起来仍然正常。第二个是连接线颜色判断。每一条线都要判断sales_2023[i]是否大于sales_2022[i]大于画绿线小于画红线。8 个品类就有 8 次判断写错一个括号或比较符号整张图的涨跌信息就反了。第三个是负增长标注位置。原文在排序后的哑铃图上添加变化箭头标注最底部的品类是负增长要单独用红色标注。品类少的时候肉眼能跟上品类一多哪个在最底部、哪个该标红就需要来回核对 y 轴顺序。这三件事单独拎出来都不难但叠加在一起手工代码的出错率就上来了。这也是原文把“绘制连接线”“设置颜色”单独列成步骤的原因。接下来换个做法代码交给 Claude Code 写你只负责给数据和确认结果。2. Claude Code 跑这份数据先把 Key 从 TaoToken 拿到手2.1 打开 TaoToken 注册并创建 API Key在让 Claude Code 干活之前先准备一把模型 Key。打开 TaoToken 注册账号登录后进入控制台在 API Keys 页面创建一个新的 Key。创建成功后复制出来本文统一用占位符YOUR_API_KEY表示。注意不要把真实 Key 贴进公开仓库也不要发给任何人。这一步对应原文里“创建测试数据”之前的准备动作。原文只需要你装好 Python 和 matplotlib现在额外多一把模型 Key因为 Claude Code 生成代码时要真正调用一次模型。2.2 把 Claude Code 的模型地址指到 https://taotoken.net/apiClaude Code 读取~/.claude/settings.json里的env字段。用文本编辑器打开这个文件没有就新建一个写入以下内容{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY, ANTHROPIC_MODEL: YOUR_MODEL_ID } }三个字段的含义ANTHROPIC_BASE_URL是接口地址填https://taotoken.net/api末尾不要加/v1。这是填进工具的接入地址不是官网页面所以不带utm参数。ANTHROPIC_AUTH_TOKEN替换成第 2.1 步创建的YOUR_API_KEY。ANTHROPIC_MODEL填模型 ID具体以 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_content 模型广场当时列表为准。模型 ID 不要凭记忆输入先打开广场看一眼准确名称再填。保存文件后重启 Claude Code让环境变量生效。之后你在 Claude Code 里的每一次对话都会走 https://taotoken.net/api 这个统一接入地址。提示ANTHROPIC_BASE_URL只写https://taotoken.net/api不要带/v1也不要拼utm参数。utm参数只用在浏览器打开的官网链接上接口地址保持干净。2.3 先验证请求能否正常返回配置完不要直接拿 8 个品类数据去跑先发一句简单的测试消息比如“你好请用一句话回答”。如果正常返回说明 Key、Base URL、模型 ID 三个值都对了。如果这一步就报错先别急着生成图表按照第 4.2 节的排查方式检查配置。确认能正常对话后再进入下一步。3. 向 Claude Code 描述哑铃图的排序和标注规则3.1 提示词里写清楚数据、颜色、排序原文第 3 节后半部分对哑铃图做了排序改造按变化幅度排序升序排列负增长品类沉到底部并用红色标注。现在把这些规则原样告诉 Claude Code。在 Claude Code 对话里粘贴下面的提示词“现有 8 个品类在 2022 年和 2023 年的销售额数据如下。请用 matplotlib 画哑铃图。要求1) 按销售额变化量排序变化量为 2023 年减 2022 年升序排列2) 增长品类用绿色连接线下降品类用红色连接线3) 下降品类在线上方标注下降金额4) 输出完整可运行的 Python 脚本不要省略循环部分。”数据沿用原文第 3 节的 8 个品类电子产品、服装鞋帽、家居用品、美妆护肤、图书音像、运动户外、食品饮料、母婴用品对应的 2022 年销售额是 85、92、78、65、45、60、88、72 万元2023 年销售额是 95、87、85、78、52、73、95、80 万元。这样做的好处是Claude Code 负责生成排序索引和颜色判断你不用再手动核对argsort的结果。原文里“绘制连接线”“设置颜色”两个步骤现在合并到一段提示词里完成。3.2 完整可运行的 matplotlib 脚本Claude Code 返回的脚本类似下面这样。它把排序、连线和标注都放在同一个代码块里保存后可以直接运行import matplotlib.pyplot as plt import numpy as np categories [电子产品, 服装鞋帽, 家居用品, 美妆护肤, 图书音像, 运动户外, 食品饮料, 母婴用品] sales_2022 [85, 92, 78, 65, 45, 60, 88, 72] sales_2023 [95, 87, 85, 78, 52, 73, 95, 80] # 按变化量升序排序让负增长出现在底部 diff [s2023 - s2022 for s2022, s2023 in zip(sales_2022, sales_2023)] order np.argsort(diff) sorted_cats [categories[i] for i in order] sorted_2022 [sales_2022[i] for i in order] sorted_2023 [sales_2023[i] for i in order] fig, ax plt.subplots(figsize(9, 7)) y_pos np.arange(len(sorted_cats)) # 绘制连接线增长为绿色下降为红色 for i, (old, new) in enumerate(zip(sorted_2022, sorted_2023)): line_color #55A868 if new old else #C44E52 ax.plot([old, new], [i, i], colorline_color, linewidth2.5, alpha0.7, zorder1) if new old: ax.annotate(f下降 {old - new:.0f} 万, xy(new, i), xytext(new - 13, i 0.15), color#C44E52, fontsize9) # 绘制数据点 ax.scatter(sorted_2022, y_pos, s110, color#4C72B0, alpha0.9, edgecolorswhite, linewidth2, label2022 年, zorder2) ax.scatter(sorted_2023, y_pos, s110, color#DD8452, alpha0.9, edgecolorswhite, linewidth2, label2023 年, zorder2) ax.set_yticks(y_pos) ax.set_yticklabels(sorted_cats) ax.set_xlabel(销售额万元) ax.set_title(8 个品类销售额变化按增长排序) ax.legend() ax.grid(axisx, linestyle--, alpha0.4) plt.tight_layout() plt.show()对比原文手工代码这个版本把三处容易出错的环节都收紧了排序用np.argsort(diff)一次完成三个列表共用同一个order连接线颜色由new old自动判断下降标注只在new old时出现。你不需要在 8 个品类里逐个人眼找负增长。3.3 自动标注负增长品类不用肉眼找原文提到“服装鞋帽这个品类其实销售额是下降的混在一堆哑铃中不容易看出来”。手工标注时你要先算出每个品类的差值再找到最小值再沿着 y 轴定位到那一行最后在图形上添加箭头或文字。品类从 8 个变成 20 个时这个定位动作会越来越痛苦。Claude Code 生成的脚本把“找负增长”变成了一次数学判断if new old。排序之后所有下降品类天然沉到底部标注文字也自动跟在对应点位附近。你拿到的图不是“看起来像排序”而是真的按变化量从低到高排列红色线段只会出现在下降品类上。4. 本地运行脚本与接入报错排查4.1 在本地执行把结果贴回对话Claude Code 负责生成代码不会直接连你的 Python 环境去执行。把第 3.2 节脚本保存为dumbbell_plot.py在本地终端运行python dumbbell_plot.py运行后弹出的窗口里从上到下增长越来越慢最底部是负增长品类。如果窗口一闪而过在脚本末尾加一行plt.savefig(dumbbell.png)保存图片然后把图片拖回 Claude Code 对话里让它对照说明。要是运行时报错也把完整报错粘贴回去Claude Code 能根据报错帮你修正代码。这里有一条边界要说明不要把生产数据直接交给模型去执行。哑铃图脚本只跑在本地Claude Code 只读取你贴给它的文本和图片结果。换成 SQL、服务器配置、命令行脚本同样适用这套桥模型生成或解释你在本地执行再把输出贴回对话。4.2 401、404 与 Base URL 多写 /v1跑代码之前最可能卡住你的其实是 Claude Code 接入配置。针对本篇场景重点查这三个地方错误现象检查点解决办法返回 401 UnauthorizedANTHROPIC_AUTH_TOKEN是否复制完整回到 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_content 控制台重新复制 Key注意别多复制空格和换行返回 404 模型不存在ANTHROPIC_MODEL是否填了不存在的 ID打开模型广场复制准确名称不要凭印象写连接错误或请求超时ANTHROPIC_BASE_URL是否多写了/v1或末尾斜杠改成https://taotoken.net/api末尾不加/v1这三个错误都能在 2 分钟内解决。解决完重新启动 Claude Code再用第 2.3 节的一句话测试确认一次然后重新生成脚本。5. 跑完回控制台对一下这次调用回到原文第 4 节的总结需要比较多个项目的两个状态时选哑铃图展示单个项目的多个组成部分时选堆积条形图比较多个项目的多个类别时选簇状条形图。你这次让 Claude Code 生成的 8 品类哑铃图正好属于第一种情况。画图跑通之后别忘了回 TaoToken 控制台对一下这次调用的模型和用量。哑铃图排序过程中Claude Code 可能多次读取代码、修改脚本、解释报错每次对话都会消耗模型额度最终消耗以控制台记录为准。画哑铃图这件事真正的成本不在 matplotlib API而在 8 个品类、两列数据、一组排序索引之间的对齐。把排序和颜色判断交给 Claude Code 之后我明显感觉轻松的是连接线颜色不会因为看错行而出错负增长标注也不会漏。人工只需要检查最后成品的品类顺序是否符合业务预期。这种配合方式的价值会在品类数量继续增加时成倍放大。配置已经验证通过的话这几个入口按需打开先到 模型对话 里用同一把 Key 发一条测试消息确认配置没填错。准备长期写代码的话Coding Plan 里有更适合连续生成代码的套餐。需要再建 Key 或查看本次调用去 控制台 API Keys 刷新即可。Claude Code 环境变量与模型广场的对应关系见 接入文档。
返回列表