#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""生成报告图表（md 环境运行，含 matplotlib）"""
import json
import os

import matplotlib
matplotlib.use('Agg')
matplotlib.rcParams['font.family'] = ['PingFang SC', 'Heiti SC', 'Arial Unicode MS']
matplotlib.rcParams['axes.unicode_minus'] = False
import matplotlib.pyplot as plt

D = '/Users/liuxinyuan/Desktop/Hermes输出-工作类/数据/diag_market_2025_2027'
OUT = os.path.join(D, 'charts')
os.makedirs(OUT, exist_ok=True)

# 1) 全球细分 2025 vs 2026E
m = json.load(open(os.path.join(D, 'market.json'), encoding='utf-8'))
pairs = {}
for x in m['global']:
    seg = x['segment']
    if seg.startswith('分子诊断'):
        continue
    key = seg.split('（')[0]
    pairs.setdefault(key, {})[x['year']] = x['value']
labels, v25, v26 = [], [], []
for k, v in pairs.items():
    if 2025 in v:
        labels.append(k); v25.append(v.get(2025) or 0); v26.append(v.get(2026) or 0)
fig, ax = plt.subplots(figsize=(8, 4.2), dpi=160)
idx = range(len(labels))
ax.bar([i - 0.2 for i in idx], v25, width=0.38, label='2025', color='#1F4E79')
ax.bar([i + 0.2 for i in idx], v26, width=0.38, label='2026E', color='#6FA8DC')
ax.set_xticks(list(idx)); ax.set_xticklabels(labels, fontsize=9)
ax.set_ylabel('亿美元'); ax.set_title('全球分子诊断相关细分市场规模（2025 vs 2026E）', fontsize=11)
ax.legend(frameon=False); ax.grid(axis='y', alpha=.25)
for i, v in zip(idx, v25):
    if v: ax.text(i - 0.2, v + 2, '%.1f' % v, ha='center', fontsize=8)
for i, v in zip(idx, v26):
    if v: ax.text(i + 0.2, v + 2, '%.1f' % v, ha='center', fontsize=8)
plt.tight_layout(); plt.savefig(os.path.join(OUT, 'global_segments.png')); plt.close()

# 2) 酶类 2025-2027
mat = json.load(open(os.path.join(D, 'materials.json'), encoding='utf-8'))
enz = sorted([(x['year'], x['value']) for x in mat['market'] if x['segment'].startswith('酶类') and x['value']])
if enz:
    fig, ax = plt.subplots(figsize=(6, 3.4), dpi=160)
    ax.plot([e[0] for e in enz], [e[1] for e in enz], marker='o', color='#1852B6', lw=2)
    for y, v in enz:
        ax.text(y, v + 0.6, '%.1f' % v, ha='center', fontsize=9)
    ax.set_ylabel('亿元'); ax.set_title('中国分子诊断酶类原料市场规模（2025-2027E）', fontsize=11)
    ax.set_xticks([e[0] for e in enz]); ax.grid(alpha=.25)
    plt.tight_layout(); plt.savefig(os.path.join(OUT, 'enzyme_trend.png')); plt.close()
print('图表:', os.listdir(OUT))
