xiaohack's Blog - 数据可视化
type: channel
link: https://blog.xiaohack.org/tag/e6c344fe/
items: Matplotlib 入门指南：让数据"开口说话"的魔法库
items: SpreadJS V19.0 新特性解密：三大专业图表上线，数据可视化能力再升级
items: SpreadJS V19.0 新特性解密：报表导出黑科技，公式逻辑全保留
items: 从数据到决策：AI 驱动的 Quick BI 架构设计与实践
items: 关于现阶段 AI 生成可视化网页的可行性方案讨论
items: 掌握核心方法论，打造高质量业务仪表板
items: 【开源自荐】PortaX 一个简洁美观的串口调试工具
items: 我用 Gemini 3 Pro 撸了一个「中国历代帝王出生地分布图」
items: 开发了一个 nginx 日志分析面板
items: 分享个香蕉 Pro 提示词 —— 看看佬友们家乡的摩天大楼长啥样

Matplotlib 入门指南：让数据"开口说话"的魔法库
type: item
date: 2026-02-02T16:04:47+08:00
description: 目录库的概览与核心价值环境搭建与"Hello, World"核心概念解析实战演练：分析电影评分趋势最佳实践与常见陷阱进阶指引1. 库的概览与核心价值想象一下，你手头有一份包含一百万条销售数据的 Excel 表格，密密麻麻的数字堆叠在一起，让你头晕眼花。你需要找出旺季和淡季的趋势，对比不同产品的销售表现，但这些冰冷的数据就像沉默的密码，让你难以快速洞察其中的规律。这就是数据可视化的痛点——没有图形，数据就是一堆难以理解的数字。Matplotlib 正是为解决这个核心问题而生的强大工具。它就像一位精通绘画的数据翻译官，能将枯燥的数据转化为直观、生动的图表，让你一眼看出数据背后的故事。在 Python 数据科学生态中，NumPy 负责数值计算，Pandas 处理结构化数据，而 Matplotlib 则承担着将数据"可视化呈现"的关键使命，三者共同构成了数据分析的三剑客。那么，为什么需要专门的 Matplotlib，而不是直接用 Excel 或其他工具呢？关键在于它的三个独特优势：无缝集成：Matplotlib 与 NumPy、Pandas 完美兼容，你可以直接读取 DataFrame 或数组进行绘图，无需繁琐的数据导出导入高度可定制：从坐标轴刻度、图例位置到颜色、字体、线型，每一个细节都可以精细控制，满足论文发表、专业汇报的苛刻要求生态基石：作为 Python 可视化的开山鼻祖，它不仅是独立工具，更是 Seaborn、Plotly 等高级库的基础，学会了它，后续学习会更轻松一句话总结：Matplotlib 让数据"说话"，让复杂的规律变得一目了然，是每位数据分析师必备的看家本领。2. 环境搭建与"Hello, World"安装说明安装 Matplotlib 非常简单，推荐使用 pip 或 conda：# 使用 pip 安装（推荐） pip install matplotlib numpy # 使用 conda 安装 conda install matplotlib numpy注意：Matplotlib 通常与 NumPy 配合使用，建议同时安装。如果安装过程中遇到权限问题，可以尝试使用 --user 参数（pip）或创建虚拟环境。最简示例让我们用最经典的"正弦曲线"作为入门案例，只需 5 行代码就能画出一张漂亮的图表：import matplotlib.pyplot as plt import numpy as np # 1. 准备数据：x从0到2π，取100个点 x = np.linspace(0, 2 * np.pi, 100) y = np.sin(x) # 2. 创建画布和绘图区域，并绘制曲线 fig, ax = plt.subplots(figsize=(8, 4)) ax.plot(x, y) # 3. 添加标题和标签 ax.set_title("正弦函数图像") ax.set_xlabel("x值（弧度）") ax.set_ylabel("sin(x)") # 4. 显示图表 plt.show()逐行解释第1-2行：导入 pyplot 子模块（简写为 plt）和 NumPy。pyplot 是 Matplotlib 的高级接口，提供了类似 MATLAB 的绘图函数，是日常绘图最常用的模块。第4行：np.linspace(0, 2*np.pi, 100) 生成从 0 到 2π 的 100 个等间距点，这是 NumPy 的核心函数，非常适合生成连续变化的 x 轴数据。第5行：np.sin(x) 计算 x 数组中每个元素的正弦值，返回对应的 y 数组。NumPy 的数学运算会自动应用到数组的每个元素，无需循环。第8行：plt.subplots(figsize=(8, 4)) 同时创建 Figure（画布）和 Axes（坐标轴）对象。figsize 参数设置画布大小为 8 英寸宽、4 英寸高。推荐使用 subplots() 而非单独创建，因为它更高效且符合面向对象风格。第9行：ax.plot(x, y) 在 Axes 对象上绘制折线图。这是最核心的绘图函数，将 x 和 y 数组连接成一条平滑的曲线。第12-14行：set_title()、set_xlabel()、set_ylabel() 分别设置图表标题、x 轴标签和 y 轴标签。所有以 set_ 开头的方法都是在配置 Axes 的属性。第17行：plt.show() 弹出窗口显示图表。在 Jupyter Notebook 中，可以省略这行代码直接在单元格中显示。预期输出：运行后会弹出一个窗口，展示一条波浪状的正弦曲线，x 轴范围是 0 到 2π，y 轴范围是 -1 到 1，曲线从原点出发，先上升到 1（π/2 处），下降到 -1（3π/2 处），最后回到 0（2π 处）。解决…

SpreadJS V19.0 新特性解密：三大专业图表上线，数据可视化能力再升级
type: item
date: 2026-01-27T11:52:52+08:00
description: 在企业数据分析场景中，专业的图表是传递数据洞察的核心载体。但传统表格工具的图表类型往往局限于基础柱状图、折线图，难以满足金融市场分析、财务利润拆解、业务趋势追踪等复杂场景的可视化需求。SpreadJS V19.0 重磅升级数据图表功能，新增瀑布图、K 线图、OHLC 图表三大专业图表类型，并支持灵活组合展示，覆盖金融、财务、运营等多行业核心分析场景，让复杂数据的可视化呈现更直观、更专业。一、核心新增图表：精准匹配专业分析需求1. 瀑布图（Waterfall Chart）：拆解数据变动的“可视化账本”瀑布图的核心价值在于清晰展示一系列正负数值对累计总额的影响，让数据变动的来龙去脉一目了然。功能亮点：支持自定义配色方案、柱宽、图例样式，可通过连接线（颜色、宽度、虚线样式）强化数据关联；提供showTotal（显示总计）、totalLabel（总计标签）、orientation（布局方向）等属性，灵活控制图表呈现效果。应用场景：完美适配财务利润拆解（如营收-成本-费用-净利润的变动过程）、预算差异分析（实际值与预算值的偏差累计）、销售业绩追踪（各区域/产品对总业绩的贡献）、库存趋势分析（入库-出库-库存结余的动态变化）。2. K 线图（Candlestick Chart）：金融数据分析的“专业工具”K 线图是金融市场的经典可视化工具，专为资产价格变动分析设计，每根 K 线都浓缩了特定时间单位的核心价格信息。功能亮点：每根 K 线包含开盘价（Open）、最高价（High）、最低价（Low）、收盘价（Close）四大核心数据；支持按日、周、月等不同时间单位展示，适配股票、期货、加密货币等各类金融资产的价格分析场景。应用场景：股票价格走势分析、期货合约波动监测、基金净值变动追踪、金融产品风险评估等专业金融场景，帮助分析师快速判断市场趋势与价格波动幅度。3. OHLC 图表（Open-High-Low-Close Chart）：金融数据的“极简可视化方案”OHLC 图表与 K 线图功能互补，以简洁的柱状线形式展示资产价格变动，更侧重核心价格点的直观呈现。功能亮点：支持两种数据模式——四值模式（开盘价、最高价、最低价、收盘价）和三值模式（最高价、最低价、收盘价）；可通过 API 灵活配置数据绑定与样式，适配不同精度的分析需求。应用场景：与 K 线图搭配使用，适合对价格数据进行轻量化展示的场景，如金融资讯平台的行情概览、移动端的简洁化数据展示、多资产价格对比分析等。4. 组合图表：灵活搭配满足复合分析需求除了新增单一专业图表，SpreadJS V19.0 还支持将新增图表与现有图表类型（如折线图、柱状图）组合展示。功能亮点：可在同一图表画布中绑定多组不同类型数据，通过分层展示实现复合分析（如 K 线图+均线图组合，同时呈现价格走势与趋势判断依据）。应用场景：金融市场的“价格+成交量”组合分析、财务报表的“实际值+预算值+偏差率”三重展示、运营数据的“业绩+增长率+目标线”综合呈现。二、技术优势：低代码集成，高灵活自定义SpreadJS V19.0 新增图表类型延续了产品“易用性+专业性”的核心优势，让开发者无需复杂开发即可快速落地：高兼容性：无缝适配 SpreadJS 现有表格生态，支持与公式计算、数据透视表、条件格式等功能联动，数据更新时图表实时同步。低代码配置：通过简洁的 API 即可完成图表初始化与参数配置，支持静态引用或 NPM 包导入两种集成方式，上手成本低。全场景适配：支持 Web 端、移动端等多终端展示，图表样式自动适配不同屏幕尺寸；兼容主流浏览器，无额外依赖。深度自定义：从数据绑定到样式细节（颜色、字体、线条）均可通过 API 灵活调整，满足企业个性化品牌视觉需求。三、典型应用场景：覆盖多行业核心分析需求财务领域：用瀑布图拆解企业季度利润构成（营收→成本→税费→净利润），让管理层直观看到各环节对最终利润的影响。金融领域：用 K 线图+OHLC 图表组合展示股票日内价格波动，搭配成交量柱状图，帮助投资者判断市场情绪与价格趋势。运营领域：用瀑布图追踪月度 GMV 变动（新增用户贡献-流失用户影响-活动拉动-最终 GMV），快速定位业务增长或下滑的核心驱动因素。库存领域：用瀑布图展示月度库存变动（期初库存+入库量-出库量-损耗量=期末库存），优化库存管理决策。结语SpreadJS V19.0 新增的三大专业图表，填补了传统表格工具在复杂场景可视化上的空白，让开发者无需依赖第三方图表库，即可在表格内实现从数据录入、计算到专业可视化的全流程闭环。无论是金融行业的价格分析、财务领域的利润拆解，还是运营场景的趋势追踪，这些专业图表都能帮助企业挖掘数据深层价值，让决策更有依据。SpreadJS V19.0 即将正式发布，欢迎持续关注，届时可通过…

SpreadJS V19.0 新特性解密：报表导出黑科技，公式逻辑全保留
type: item
date: 2026-01-22T09:47:55+08:00
description: 随着企业数字化转型的深入，报表不仅是数据的展示工具，更是业务逻辑的载体。在与众多开发者的交流中，我们发现了一个长期存在的痛点：“为什么我精心设计的报表导出到 Excel 后，动态的公式都变成了死板的数值？”在即将发布的 SpreadJS V19.0 中，我们针对报表插件（ReportSheet）带来了一项重量级更新——“导出预览报表到 Excel 时保留公式”功能。今天，我就带大家深度解密这项特性，看它如何打破数据与逻辑之间的壁垒。一、 痛点回顾：消失的“计算逻辑”在过去，开发者在报表模板中定义的公式，在导出为 Excel 文件时，往往会被计算引擎处理并转化为静态值。这意味着，当终端用户拿到导出的 Excel 文件并试图修改其中的基础数据时，报表中的小计、总计等关键指标并不会随之更新。用户不得不手动重新输入 Excel 公式，这不仅降低了工作效率，也让报表失去了原本的动态交互灵魂。二、 核心能力：让 Excel 报表“动”起来SpreadJS V19.0 引入的“保留公式导出（Preserve Formula in Export）”功能，允许用户在将报表导出为 Excel 文件时，完整保留单元格中的计算逻辑。1. 核心价值总结逻辑无缝延续：导出后的 Excel 依然拥有动态计算能力，而非固定数值。自由编辑体验：终端用户修改 Excel 单元格内容后，相关公式会自动重算，保持与原始系统一致的交互体验。三、 深度解析：它是如何实现的？为了兼顾各种复杂的报表场景，我们针对不同的公式类型和布局制定了严密的导出策略。1. 标准 Excel 函数处理连续区域引用：如果报表展开后的单元格区域是连续的，导出时将作为单一区域引用。不连续区域引用：对于 SUM、AVERAGE、MIN、MAX 等聚合函数，即使报表生成的区域不连续，SpreadJS 也会智能地将其导出为多个区域的组合引用。2. R.V（报表变量/视觉）公式的智能转换R.V 公式是 SpreadJS 报表中的特色功能。在 V19.0 中：如果公式在预览模式下可解析，导出时会精准转换为 Excel 实际单元格引用。对于表达式中部分可解析的情况，我们会使用 SJS.EMPTY_CELL（值为 0）进行占位，确保公式结构的完整性。3. 报表专用公式的保留对于如 R.Index、R.Rank、R.YoY（同比）等 SpreadJS 专有的报表函数，导出时会保留其函数名和引用。虽然 Excel 原生不支持这些函数（会显示为 #NAME?），但这为二次开发或后续回导提供了珍贵的元数据信息。四、 开发者友好：配置只需一个属性在 SpreadJS V19.0 中，启用这项功能非常简单。方式一：API 配置在设置 StaticCell 类型的模板单元格时，只需指定 preserveFormulaInExport 属性：// 代码示例 export type StaticCell = { type: 'Static', preserveFormulaInExport?: boolean; // 设为 true 即可开启 // ... 其他属性 };方式二：设计器直观操作如果您使用的是 SpreadJS 设计器，完全无需编写代码。在“报表单元格”属性面板中，勾选“导出 Excel 时保留公式”选项即可一键开启。五、 结语“保留公式导出”特性的加入，标志着 SpreadJS 报表插件在“所见即所得”的基础上，进一步实现了“所获即所用”。它不仅是导出格式的改进，更是对数据生命周期的深度赋能。SpreadJS V19.0 还有更多关于 AI 插件增强、协同插件正式版、WebWorker 增量计算等重磅特性蓄势待发。道阻且长，行则将至。 让我们共同期待 V19.0 带来的生产力变革！注：具体技术文档请以正式发布版本为准。

从数据到决策：AI 驱动的 Quick BI 架构设计与实践
type: item
date: 2026-01-21T18:00:31+08:00
description: 在生成式 AI 重构数据生产力的时代，BI 工具正从"被动响应"走向"主动洞察"。在 2025 年 4 月 InfoQ 举办的QCon 全球软件开发大会（北京站）上，阿里云智能集团瓴羊高级技术专家王璟尧分享了“从数据到决策：AI 驱动的 Quick BI 架构设计与实践”，他介绍了阿里云 Quick BI 如何通过技术架构跃迁、结合大模型的突破实现从传统 BI 到 AI 驱动的智能 BI 的跨越式进化。并重点解析领域大模型与 BI 引擎的协同设计、NL2SQL 算法调优与架构演进、AI + BI 在场景落地实践过程中的技术权衡，为行业提供可复用的技术范式。预告：将于 4 月 16 - 18 召开的 QCon 北京站策划了「AI 重塑数据生产与消费」专题，将深入探讨如何系统化地运用大模型与智能体技术，重塑数据全链路的每一个环节。内容涵盖引擎与架构优化、数据治理、开发与运维提效、下一代 BI 与数据工具，以及智能的取数与分析等多个方向。如果你也有相关方向案例想要分享，欢迎提交。以下是演讲实录（经 InfoQ 进行不改变原意的编辑整理）。BI 领域的技术演进及趋势传统 BI VS 大模型驱动 BI早期 BI 是在数据仓库和数据库不断发展演进后形成的需求场景：数据仓库会将各类数据融合到一起进行数据清洗和分析，随后业务人员对自助分析产生了一系列诉求，早期的 BI 工具便应运而生，像 90 年代的 Business Object 就是一个比较有代表性的例子，具有一定限度的自助式分析能力。当时其实还没有“商业智能”这一概念，随着自助分析能力要求的不断提高，可视化、自助式可交互的分析需求也越来越强烈，于是敏捷 BI 应运而生：基于可视化的自助式、可交互的分析，以 Tableau/Qlik 为代表，其最大特点是可通过拖拉拽、按钮点击等简单操作就能完成报表的搭建工作。进入大模型时代，大模型强大的语言分析和生成能力以及更接近人类思维的推理方式，让 BI 领域进行了重新定位：即从一个单纯的工具到数字助手的进化，模型能力的突破让正在的商业“智能”可以从 DEMO 和实验室走向实际应用。Quick BI 也在各类大模型技术发展的时代洪流中逐步演进，不断成熟与发展，实践落地智能小 Q 系列，给用户带来全新的、端到端到产品体验。传统数据分析存在局限性，它几乎主要聚焦于报表平台的工作流程：业务方提出需求，产研团队加工执行，然后制作简单的报表，以辅助管理仪表板。传统数据分析主要面向一线业务和老板，工具即使再敏捷，交付物本质上也是以固定式报表作为承载。尽管敏捷 BI 的诞生缓解了部分问题，但业务团队和数据团队之间难以融合贯通的问题依然无法避免。而在 AIGC 时代，大模型加持的对话式分析可以对自然语言灵活响应，简单、自动地完成需求，或许“人人都是数据消费者”及“数据民主化”不再仅仅是一句口号了。大模型驱动的业务落地方向基于用户的实际需求和大模型 Agent 技术发展，我们对大模型驱动的业务落地演进方向做了大致判断。从执行到思考，从智能到智慧，难度系数逐步增加。大模型刚出现的初期，大家都在做 Copilot（即搭建助手）：用户通过 Copilot 用简单指令或描述就能辅助搭建报表，从而降低 BI 工具的使用门槛和成本。然后是 Chat BI，理论上它会改变整个分析流程，用户像和人类对话一样向系统提问，由系统即时理解并返回准确的分析结果，所有人都可以随时随地的获取数据，降低传统 BI 报表和仪表板出现的必要性。再接着是洞察分析：基于数据、业务知识，利用机器学习算法、数据挖掘技术的融合，叠加上大模型的语言理解和推理能力，让使用传统算法的洞察分析脱胎换骨，实现更精准的总结、诊断、归因，能够自动发现数据中隐藏的价值。第四阶段可能还为时过早，很多厂商将其称为 DI（即决策智能 Decision Intelligence）。随着数据量爆炸式增长和分析技术进步，如多模态、多元信息整合、多 Agent 技术等，我们可能不再满足于单个功能，产品形态会演变成分析平台主动在海量数据中发现价值，通过完整数据报告或主动 Feeds 流方式推送给我，不仅能给出“发生了什么”，还能进一步解释 “为什么会发生”、“未来会怎么样”，为用户提供更高阶的决策支持，这是也许是目前能看得到的数据分析领域的理想态。基于对业务落地的判断，企业级智能 BI 分析离不开 BI 工具、大模型和企业私域知识这三者的有效融合。首先，BI 工具作为核心框架，凭借强大的数据分析和可视化能力，将规模庞大和复杂的数据转化为直观易懂的图文报表，为企业搭建洞察业务的桥梁。要最大化的发挥 BI 工具本身的作用，如高性能分析引擎、可视化、安全管控、开放集成能力、协调办公能力等。其次，BI 工具并非孤立的存在，大语言模型的加入为其注入了灵…

关于现阶段 AI 生成可视化网页的可行性方案讨论
type: item
date: 2026-01-21T17:23:58+08:00
description: 我开发过一款开源的数据可视化编辑器，在编辑完成后他会产生一个 json 格式的项目数据结构。这两年 AI 识图的效果快速发展。我就在想，如果我随手丢一个可视化面板的效果图，AI 就可以识别这个效果图中的元素，并且按照我项目的数据格式要求生成最终的 JSON 文件。这样一来岂不就完成了 AI 直接生成可视化面板的效果吗？摸索了一两天之后有一条可实践的路径，大概流程为 让 AI 识别图片中的可视化元素。 根据识别的元素选择我编辑器中可以使用的组件 结合上面两点让 AI 输出一个简化版的数据结构，其中包括使用的组件类型、组件的尺寸、组件的位置等信息 然后再自己编写一套逻辑解析上面的简化版数据结构，确保生成的最终数据结构是编辑器可以识别的 上面的流程确实能够走通，但是生成的效果图实在惨不忍睹(如下图）。最根本的原因在于不管提示词写得多么详细，AI 反馈过来的简化的数据结构始终都是非常潦草的。比如我从肉眼上看这个设计稿可能至少需要一百个可视化元素，但实际上它返回给我的结果可能就包含十几二十个元素。我以为是 AI 上下文大小限制的问题。但我切换过高级模型 200K 的上下文长度完全是足够的。但是 AI 输出结果依然没有提升多少。 想问问各位 V 友。这个想法是现阶段可以实现的吗？ AI 识图的能力有没有到可以支撑这个想法的地步？

掌握核心方法论，打造高质量业务仪表板
type: item
date: 2026-01-20T13:51:48+08:00
description: 前言在数字化运维与业务监控的实践中，仪表板（Dashboard）与汽车的仪表盘同等重要，它不仅是数据可视化的载体，更是团队快速定位问题、洞察数据趋势的核心工具。观测云在平台中内置了大量通用组件、云服务的仪表板模板。但如果你希望从零开始构建个性化的仪表板，又或者对自己绘制的仪表板不够满意，那么这篇文章将教授你几个小技巧，帮助你有效提升仪表板的质量。观测云简介观测云是一个统一实时监测平台，它提供全面的系统可观测性解决方案，帮助用户快速实现对云平台、云原生、应用及业务的监控需求。观测云的核心功能包括：基础设施监测，日志采集和分析，用户访问监测（RUM），应用性能监测（APM），服务可用性监测（拨测），安全监测，智能监控等等。这款产品能够帮助工程师全面了解端到端的用户体验追踪，了解应用服务的每一次调用，以及全面监控云时代的基础设施。此外，观测云还具备快速发现系统安全风险的能力，为数字化时代提供安全保障。更多信息可以访问观测云官网：https://www.guance.com基础仪表板的绘制让我们进入到观测云，创建一个属于您自己的仪表板。首先，你需要找到仪表板的入口「场景」-「仪表板」，点击「新建仪表板」-「新建空白仪表板」。其次，可以从侧滑窗口中选择适合展示数据的图表类型，拖拽到左边的空白画布中。以常用的「时序图」为例，拖动到画布中即可打开「新建图表」弹窗，此时通过数据筛选控件来选择需要展示的指标。如图所示，我们已经展示了一条指标曲线，它代表的含义为：指标集为 cpu，指标名为 usage_total，按照 host 进行分组并统计 Avg 平均值，只显示 host=DESKTOP-F9E75IG 的值（过滤条件），点击右下角的保存即可。此时你已经完成了第一张图表的制作，通过一张张图表的叠加，你很快能得到一个完整的仪表板，不过它看上去有些简陋，我们需要更多技巧对仪表板的美观程度和易读性进行优化。仪表板的优化新增标题和描述恰当的标题能让用户第一时间知道图表展示的指标及其含义，而图表的描述能够起到有效补充说明。我个人的习惯是将图表名设置为指标的英文名，然后在「描述」中补充该指标的中文含义。如下所示：保存生效的效果如下，图表左上角将展示标题，而鼠标 hover 到帮助按钮上则会悬浮显示描述。数据单位一部分指标在采集到观测云后没有单位，因此在绘制仪表板时需要注意补充单位。别名图表的曲线会显示对象的名称，并且对象名称会随着分组条件的增多而变得复杂。例如下图，由于添加了 namespace，pod_name 等多个分组条件，对象名称显得很长，很不直观。好在我们可以通过配置「别名」来简化对象名称的显示。在图表配置的「别名」处，我们选择对应的指标序列，并用 {{}} 将分组条件包起来作为变量，例如下图中的分组条件 pod_name 就写为 {{pod_name}} ，效果如下所示。我们也支持用多个变量作为别名，写法为 {{分组条件1}}-{{分组条件2}} ，例如 {{namespace}}--{{pod_name}} ，效果如下图所示：现在，曲线上显示的对象名称已经比原始的名称简洁、清晰了很多。图例图表默认没有带上图例，除非将鼠标 hover 上去，否则无法看到什么颜色的曲线代表哪一个对象，如下图的左侧所示。而「图例」则可以将对象的名称和统计值显示到图表中，如下图的右侧所示。添加图例的方式如下，可选择将图例放置在图表的底部或者右侧，并显示单个或者统计值，将 Avg、Max、Last 一起显示出来是个不错的选择。分组当仪表板中需要展示很多张图表时，使用「分组」来将不同含义的图表分门别类地归类就十分有必要了，这会让仪表板的显示更具有条理，用户能通过分组快速找到自己关注的图表，如下图所示。给仪表板添加分组时，只需要在侧滑菜单中找到「分组」这个图表类型，拖动到左侧画布即可。取一个有意义的分组名称，选择一个与众不同的颜色，保存即可。下图即为新创建的分组，后续添加的图表即可拖动到该分组下。锁定时间如果你希望每次进入到仪表板，都查看到固定时间区间（例如最近1天）的数据，应该如何实现呢？我们很容易注意到仪表板的时间控件，可以在这里固定整个仪表板的时间。如果需要将单个图表的时间进行固定，而其他图表的时间则跟随仪表板的时间控件，也很好实现。我们进入单个图表的编辑窗口，打开「高级配置」，将时间锁定为指定区间即可。配置完成后，这个图表的右上角会出现你锁定的时间区间，该时间不受仪表板整体的时间区间控制，如下图所示。视图变量视图变量允许用户通过下拉菜单来选择特定对象的监控数据，从而根据自身需求动态筛选和分析数据。如下图所示，该仪表板包括了 Cluster、Namespace 和 Node 三个视图变量，用户可以进行自由筛选。我们首先添加一个简单的视图变量，需求是通过选择 ho…

【开源自荐】PortaX 一个简洁美观的串口调试工具
type: item
date: 2026-01-14T18:20:57+08:00
description: 佬们好，vibe 了一个简洁美观的串口调试工具 PortaX项目地址Portax：一款简单、美观且便捷的串行调试工具开箱即用： Portax亮点ui 简洁美观：深浅主题关键词高亮：支持自定义关键词高亮及颜色配置快捷指令：可自定义、持久化保存的快捷指令组，支持快速点击发送历史回溯：支持通过键盘 ↑ / ↓ 键回溯发送历史数据过滤：支持实时日志搜索与过滤RX/TX 监控：底部状态栏集成动态呼吸灯，实时反馈数据收发状态支持生成折线图：这个功能目前还没优化好，效果如图三，且可以截图与导出图片到 pdf演示图图一图二图三图四开发计划优化曲线部分windows 客户端其他协议欢迎佬们提建议，帮助我完善优化，使 PortaX 成为更好的工具📌 转载信息来源： https://linux.do/t/topic/1447551原作者： HaxIOX转载时间： 2026/1/14 18:20:45

我用 Gemini 3 Pro 撸了一个「中国历代帝王出生地分布图」
type: item
date: 2026-01-13T11:18:36+08:00
description: 用 Gemini 撸了一个「中国历代帝王出生地分布图」 可以筛选出生地、祖籍地点、定都地点 可以筛选创业帝王，还是守成帝王 可以筛选是大一统王朝，还是割据、偏安、临时政权 可以筛选朝代和省份 可以玩玩： https://imperial-origins-map.pomodiary.com

开发了一个 nginx 日志分析面板
type: item
date: 2026-01-08T16:13:20+08:00
description: 前言最近在优化网站访问链路的过程中，部署了一套 WAF 防火墙，它大部分功能都做的挺好，美中不足的地方就是针对于网站访客的相关功能需要付费（ 3600 元/年）才能用。付费是不可能付费的，找了一圈 nginx 日志分析的开源项目，大部分都做的挺简陋的，要么就是做的很重，需要部署其他服务。既然找不到合适的，那就自己动手写一个吧！如果看不到图片的话，直接访问我个人网站上发布的。https://www.kaisir.cn/post/186实现效果做了 4 个模块对日志数据进行分析。 访问概况 数据日报 实时访问 访问明细 访问概况概况模块中，做了 8 个维度的数据分析。核心指标在这个维度中，针对 http 状态码、浏览量、访客数、会话数做了更细致的划分。每一个划分中，在详情面板里，都可以看到这个访客在什么时间做了什么事情。趋势分析 & 新老访客这一部分可以看到每天的访问趋势以及当天与前一天的新老访客占比。来路、受访页、入口页这部分可以看到访客的来源，以及每个路径的访问次数。地域 & 终端设备这部分可以看到每个省份的访问情况以及访问设备的分布情况。数据日报在这个模块中，可以看到每天的浏览量、访客数、平均访问时长等信息。实时访问在这个模块里，可以查看最近 5/15/30 分钟内的访问情况访问明细这个模块就以表格的形式展示每一条日志。如何使用为了方便使用，我已经将这个项目打包成镜像发布到 dockerhub 上了，镜像名为magiccoders/nginxpulse，可以通过 docker 的形式使用，也可以通过 docker compose 的形式使用。需要传入的参数： WEBSITES 它的值是个数组，一个对象就是一个网站，需要传入网站名、日志路径、网址（或者内网 ip ，主要用于站内/站外的区分） ports 端口映射，容器内暴露出来的端口是 8088 volumes 文件挂载，这里需要挂载：日志文件、容器内产生的数据文件、时区 此处我以 docker compose 的形式举例：version: "3" services: nginxpulse: image: magiccoders/nginxpulse:latest container_name: local_nginxpulse ports: - "9200:8088" environment: WEBSITES: '[{"name":"神奇的程序员","logPath":"/var/log/nginx/access.log","domains":["kaisir.cn","www.kaisir.cn"]}]' #domains 用于“来源（ referer ）统计”的站内/站外分类 PV_EXCLUDE_IPS: '["127.0.0.1", "::1", "10.10.0.1", "192.168.30.21"]' #pv 统计时需要排除的 ip volumes: - ./nginx_data/logs/all/access.log:/var/log/nginx/access.log - ./nginxpulse_data:/app/nginxpulse_data - /etc/localtime:/etc/localtime restart: unless-stopped 写在最后至此，文章就分享完毕了。我是神奇的程序员，一位前端开发工程师。如果你对我感兴趣，请移步我的个人网站，进一步了解。

分享个香蕉 Pro 提示词 —— 看看佬友们家乡的摩天大楼长啥样
type: item
date: 2026-01-06T12:18:53+08:00
description: 把城市名替换成你所在的城市，或者你想去的城市，期待看到你们的作品第一弹Present a clear, side miniature 3D cartoon view of [YOUR CITY] tallest buildings. Use minimal textures with realistic materials and soft, lifelike lighting and shadows. Use a clean, minimalistic composition showing exactly the three tallest buildings in Sopot, arranged from LEFT to RIGHT in STRICT descending height order. The tallest must appear visibly tallest, the second must be clearly shorter than the first, and the third must be clearly shorter than the second. All buildings must follow accurate relative proportions: if a building is taller in real life, it MUST be taller in the image by the same approximate ratio. No building may be visually stretched or compressed. Each building should stand separately on a thin, simple ceramic base. Below each base, centered text should display: Height in meters — semibold sans-serif, medium size Year built — lighter-weight sans-serif, smaller size, directly beneath the height text Provide consistent padding, spacing, leading, and kerning. Write "YOUR CITY NAME" centered above the buildings, using a medium第二弹Create a high-detail 3D isometric diorama of the entire China, where each state is represented as its own miniature platform. Inside each state, place a stylized, small-scale 3D model of that state's most iconic landmark. Use the same visual style as a cute, polished 3D city diorama: soft pastel colors, clean materials, smooth rounded forms, gentle shadows, and subtle reflections. Each landmark should look like a miniature model, charming, simplified, but clearly recognizable. Arrange the states in accurate geographical layout, with consistent lighting and perspective. Include state labels and landmark labels in a clean, modern font, floating above or near each model. 在 cherry studio 的助手配置里面加上自定义参数，关闭流式输出开关，cs 版本升级到最新{"aspectRatio": "16:9", "imageSize": "4K"} 4K 高清大图，17M，放在了 cf 的存储桶里https://img.0rzz.ggff.net/shanghai.pnghttps://img.0rzz.ggff.net/china.png 20M📌 转载信息来源： https://linux.do/t…