Data Visualization
根据数据类型智能选择图表,按统一规范生成 Python matplotlib 代码。三套风格均按真实报告视觉提取并可复刻。
工作流程
- 询问风格 - 若用户未指定风格,展示三套选项供选择
- 分析数据 - 识别数据类型(时序、分类、占比等)
- 选择图表 - 参考
references/chart_selection.md匹配最佳图表类型 - 找对应示例 - 优先从
examples/中找最接近的模板脚本,直接照着改 - 查细节规范 - 遇到 examples 没覆盖的场景,查
references/visualization_spec.md - 输出代码 - 生成完整可运行的 Python 代码
风格选项
| # | 风格 | 适用场景 | 主色 |
|---|---|---|---|
| 1 | BCG(默认) | 通用数据分析、研究报告 | 绿色 #2ca02c |
| 2 | The Economist | 媒体发布、公开报告 | 红线 #E3120B + 蓝 #006BA2 |
| 3 | McKinsey | 咨询汇报、高管演示 | 亮青 #2CBDEF + 浅灰 #D4D4D4 |
示例脚本(examples/)
所有示例都是完整可运行的脚本,改数据即用。
| 脚本 | 风格 | 图表类型 | 参考 |
|---|---|---|---|
bcg_hbar.py | BCG | 水平柱状图 | 通用调研报告 |
economist_hbar.py | Economist | 水平条形图 | 类别排行对比 |
economist_line.py | Economist | 折线图(时间序列) | 多系列趋势,重点上色 |
mckinsey_grouped_vbar.py | McKinsey | 分组垂直柱 | Exhibit 7 样式 |
mckinsey_grouped_hbar.py | McKinsey | 分组水平条 | Exhibit 4 样式 |
mckinsey_stack100.py | McKinsey | 100% 堆叠单条 | Exhibit 1 样式(Likert-scale) |
图表选择速查
| 数据类型 | 推荐图表 |
|---|---|
| 趋势变化 | Line Chart |
| 类别比较 | Bar Chart |
| 占比分布 (≤5项) | Pie/Donut |
| 占比分布 (>5项) | Stacked Bar |
| Top vs Others 对比 | 分组柱状图(McKinsey 标配) |
| Likert-scale 分布 | 100% 堆叠单条(渐变色) |
| 相关性 | Scatter Plot |
| 层级结构 | Treemap |
完整 25 种数据类型映射见 references/chart_selection.md。
各风格核心规范速查
BCG 风格
- 主色
#2ca02c(绿),无渐变 - 标题含样本量
(N=X) - 去除上/右/下边框,无网格线
The Economist 风格
- 白色背景(非蓝灰)
- 顶部标志元素:全宽红线
#E3120B+ 左上角红色方块 tag,都用fig.transFigure + clip_on=False(禁用fig.add_axes) - 所有左对齐元素(红线起点/tag/标题/分类标签)共用基准
LEFT_X=0.14 - 主数据系列
#006BA2,灰化对照#758D99 - 分类标签必须用
blended_transform_factory(fig.transFigure, ax.transData)对齐,否则会超出 LEFT_X 左端
McKinsey 风格
- 亮青
#2CBDEF+ 浅灰#D4D4D4二元对照(非单色高亮其他灰化) - 左上"Exhibit X"小灰字 + 下方全宽细分隔线
- 超大粗体标题(15~17pt),结论句
- 图例在右上角,色块 + 文字纵向排列
- 柱子必须窄(
width=0.32~0.38) - y 轴隐藏刻度,数字直接写在柱上
- 来源注脚写
Source:或"资料来源:"
三条常见坑(必看)
- 禁用
fig.add_axes(会与布局系统冲突)。Economist 的红线/tag 用ax.plot + mpatches.Rectangle配fig.transFigure + clip_on=False。 - 禁用
ax.set_ylabel放中文单位(会伸出LEFT_X左侧破坏对齐)。y 方向单位写进副标题;set_xlabel可用(在 x 轴下方居中)。 - 轴刻度 formatter 禁止含中文汉字(字体缺失变方块)。中文单位用副标题或
set_xlabel。
完整规范(三套共享工具函数 + 所有代码模板)见 references/visualization_spec.md。
关键约束
- 占比数据超过 5 项时,用堆叠柱状图替代饼图
- 中文必须通过
FontProperties显式设置(/System/Library/Fonts/STHeiti Light.ttc) - BCG 标题含样本量
(N=X);McKinsey 标题是结论句 + "Exhibit X"编号;Economist 标题是描述性短句 - 数据标签格式
{:.1f}%或{:.2f}(看量级)