当前位置:首页>python>科研绘图 | 基于Python绘制多模型性能对比雷达图

科研绘图 | 基于Python绘制多模型性能对比雷达图

  • 2026-02-07 18:00:46
科研绘图 | 基于Python绘制多模型性能对比雷达图

雷达图(Radar Chart),也被称为蜘蛛图(Spider Chart),是一种非常有效的多维度数据可视化工具。在机器学习模型比较、性能评估等场景中,雷达图能够直观地展示多个模型在不同指标上的表现,快速识别各模型的优势和劣势。

本文将详细介绍如何使用Python和matplotlib库,从CSV数据文件开始,一步步构建一个专业、美观的多模型比较雷达图。将实现以下功能:

  • Nature风格的专业图表:使用Times New Roman字体,符合学术期刊发表标准
  • 智能标签旋转:外环标签自动沿圆环方向排列,保证可读性
  • 多套配色方案:提供4种不同的配色方案,适应不同场景需求
  • 批量导出功能:一键生成单图和拼图,方便论文使用

结果

同时每个单图也会自动保存!!

一、环境准备与基础设置

在开始绘制之前,需要导入必要的库,并设置matplotlib的全局参数。这些设置将确保生成的图表符合学术期刊的发表标准,特别是Nature等顶级期刊对图表格式的要求。

首先,导入核心库:numpy用于数值计算,pandas用于数据处理,matplotlib用于绘图。然后,配置matplotlib的全局参数,包括字体、字号、线条宽度等。这些设置将应用到所有后续绘制的图表中。

import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom matplotlib import rcParams# =========================# 0. 基础设置 (Nature 风格)# =========================config = {"font.family"'serif',"font.serif": ['Times New Roman'], "mathtext.fontset"'stix',"font.size"12,"axes.linewidth"1.0,"figure.dpi"300,}rcParams.update(config)

关键设置说明:

  • 字体设置:使用serif字体族,并指定Times New Roman作为首选字体。这是学术期刊常用的字体,具有专业、正式的外观。

  • 数学公式字体mathtext.fontset设置为stix,确保数学公式与正文字体风格一致。

  • 字号和线条:基础字号设为12pt,坐标轴线宽设为1.0,这些都是期刊发表的标准设置。

  • 分辨率figure.dpi设为300,确保导出的图片具有足够的分辨率,适合印刷和在线发表。


二、数据读取与预处理

数据是可视化的基础。设计为读取CSV格式的数据文件,其中第一列是模型名称(Model列),其余列是各种评估指标(如Accuracy、Precision、Recall等)。

这个函数的设计非常简洁高效:它读取CSV文件,将数据分为模型名称列表、指标名称列表和数值矩阵三部分。这种分离式的数据结构使得后续处理更加清晰和灵活。

# =========================# 1. 数据读取# =========================CSV_NAME = "model_performance.csv"def_read_table(csv_path):# 三行读取:Model列=模型名,其余列=指标    data = pd.read_csv(csv_path)    X = data.drop(columns=["Model"])    y = data["Model"]return y.astype(str).tolist(), X.columns.tolist(), X.astype(float).to_numpy()

函数解析:

  • 数据分离:使用drop(columns=["Model"])将模型名称列分离出来,剩余的列就是各个评估指标。

  • 类型转换:模型名称转换为字符串列表,指标名称直接获取列名,数值数据转换为numpy数组以便后续计算。

  • 返回值:返回三个值,分别是模型名称列表、指标名称列表和数值矩阵。这种设计使得函数调用非常直观。

三、核心工具函数详解

3.1 环形标签绘制函数

这是整个代码中最关键也最复杂的函数之一。在极坐标图中,标签的旋转角度计算需要特别小心,因为matplotlib的极坐标系统有theta_offset(角度偏移)和theta_direction(方向)两个参数,这些参数会影响标签的实际显示位置。

如果简单地使用原始角度,标签可能会出现倒置或方向错误的问题。函数通过计算"显示角度"(考虑了偏移和方向),然后让文字沿着圆环的切线方向排列,并在下半圆自动翻转,确保文字始终可读。

def_draw_ring_label(ax, text, angle_rad, radius, fontsize=12):# 需要用"显示角度"(考虑 theta_offset / theta_direction),否则会出现 AUC 等标签朝向不对    display_theta = ax.get_theta_direction() * angle_rad + ax.get_theta_offset()    angle_deg = (np.degrees(display_theta) + 360) % 360# 让文字沿切线方向放置;并在下半圆翻转,保证可读    rotation = angle_deg - 90    rotation = (rotation + 180) % 360 - 180# 归一化到 [-180, 180]if rotation < -90or rotation > 90:        rotation += 180        rotation = (rotation + 180) % 360 - 180    ax.text(        angle_rad,        radius,        text,        ha="center",        va="center",        rotation=rotation,        rotation_mode="anchor",        fontsize=fontsize,        fontweight="bold",        color="black",        zorder=5,    )

算法详解:

  1. 显示角度计算display_theta = ax.get_theta_direction() * angle_rad + ax.get_theta_offset()

    • 这里考虑了极坐标的方向(顺时针或逆时针)和偏移量(通常设为π/2,使0度在顶部)
  2. 角度归一化:将角度转换为0-360度的范围,避免负角度带来的问题

  3. 切线方向计算rotation = angle_deg - 90

    • 减去90度是为了让文字垂直于半径方向,即沿着圆环的切线方向
  4. 可读性优化:如果旋转角度在-90到90度之外,文字会倒置,此时需要翻转180度,确保文字始终正向可读

  5. 文本绘制:使用rotation_mode="anchor"确保文字围绕锚点旋转,而不是围绕中心点

3.2 四舍五入函数

在设置坐标轴刻度时,经常需要将数值四舍五入到指定的小数位数。Python内置的round函数使用的是"银行家舍入法"(round half to even),这在某些情况下可能不符合预期。实现了一个标准的四舍五入函数,使用Decimal模块确保精度。

def_round_half_up(x: float, ndigits: int = 2) -> float:from decimal import Decimal, ROUND_HALF_UPif ndigits <= 0:        q = Decimal("1")else:        q = Decimal("0." + "0" * (ndigits - 1) + "1")return float(Decimal(str(x)).quantize(q, rounding=ROUND_HALF_UP))

函数特点:

  • 精确控制:使用Decimal类型避免浮点数精度问题
  • 标准四舍五入ROUND_HALF_UP确保0.5总是向上舍入
  • 灵活的小数位数:可以指定任意小数位数

四、雷达图绘制核心函数

这是整个代码的核心部分,plot_radar函数负责绘制完整的雷达图。这个函数设计得非常全面,包含了雷达图的所有要素:外环标签、网格线、数据系列、图例等。

4.1 函数参数与初始化

函数接受多个参数,包括模型名称、指标名称、数值矩阵、线条颜色、外环颜色等。这种参数化的设计使得函数具有很高的灵活性。

defplot_radar(    ax,    model_names: list[str],    metric_names: list[str],    values: np.ndarray,    line_colors_local: list[str],    ring_colors_local: list[str],    *,    annotate: str | None = None,    legend: bool = True,    legend_fontsize: float = 11,    label_fontsize: float = 12.0,):from matplotlib.lines import Line2D    n_models = len(model_names)    n_metrics = len(metric_names)    angles = np.linspace(02 * np.pi, n_metrics, endpoint=False)    angles_closed = np.concatenate([angles, [angles[0]]])

关键初始化:

  • 角度计算:使用np.linspace将360度(2π)均匀分配给各个指标
  • 闭合角度angles_closed在末尾添加第一个角度,使得多边形能够闭合
  • 数量统计:记录模型数量和指标数量,用于后续循环

4.2 坐标系统与范围设置

雷达图的坐标系统设置至关重要。需要确定网格的最大半径、外环的位置和宽度等。这些参数都是基于数据的最大值动态计算的。

    max_val = float(np.max(values)) if values.size else1.0    r_grid_max = 1.10if max_val <= 1.0else _round_half_up(max_val, 2)    r_ring_inner = r_grid_max    r_ring_width = r_grid_max * 0.155    r_outer = r_ring_inner + r_ring_width    r_ring_mid = r_ring_inner + r_ring_width / 2    ax.figure.patch.set_facecolor("white")    ax.set_facecolor("white")    ax.set_theta_offset(np.pi / 2)    ax.set_theta_direction(-1)    ax.set_ylim(0, r_outer + r_grid_max * 0.03)    ax.set_axisbelow(True)

参数说明:

  • 动态范围:如果最大值不超过1.0,使用1.10作为网格最大值;否则使用四舍五入后的最大值
  • 外环设计:外环的内半径等于网格最大值,宽度为最大值的15.5%,这样设计使得外环与网格紧密贴合
  • 极坐标设置
    • theta_offset=np.pi/2:使0度位于顶部(12点钟方向)
    • theta_direction=-1:设置为顺时针方向(符合常规习惯)
  • 背景色:统一设置为白色,确保图表干净整洁

4.3 外环标签绘制

外环是雷达图的重要视觉元素,它不仅美观,更重要的是承载了指标名称。使用ax.bar函数绘制扇形块,每个扇形对应一个指标,颜色各不相同。

    seg_width = 2 * np.pi / n_metricsfor i, (ang, label) in enumerate(zip(angles, metric_names)):        ax.bar(            ang - seg_width / 2,            r_ring_width,            width=seg_width,            bottom=r_ring_inner,            align="edge",            color=ring_colors_local[i % len(ring_colors_local)],            edgecolor="white",            linewidth=2.0,            zorder=1,        )        _draw_ring_label(ax, label, ang, radius=r_ring_mid, fontsize=label_fontsize)

绘制细节:

  • 扇形宽度seg_width = 2π / n_metrics,确保所有扇形均匀分布
  • 位置调整ang - seg_width / 2使扇形以角度为中心对称
  • 颜色循环:使用取模运算i % len(ring_colors_local),即使指标数量超过颜色数量也能正常工作
  • 白色边框edgecolor="white"linewidth=2.0创建明显的分隔线
  • 标签绘制:调用_draw_ring_label函数,标签会自动沿圆环方向排列

4.4 网格线与坐标轴设置

网格线帮助读者准确读取数值,设置了径向网格线(虚线)和同心圆网格线,并配置了坐标轴刻度。

    ax.set_xticks(angles)    ax.set_xticklabels([""] * n_metrics)    ax.set_rlabel_position(0)    yticks = [        _round_half_up(r_grid_max * 0.252),        _round_half_up(r_grid_max * 0.502),        _round_half_up(r_grid_max * 0.752),        _round_half_up(r_grid_max, 2),    ]    ax.set_yticks(yticks)    ax.set_yticklabels([f"{t:g}"for t in yticks], fontsize=10, fontweight="bold", color="black")    grid_color = "#7F7F7F"    ax.yaxis.grid(True, linestyle="--", linewidth=0.9, color=grid_color, alpha=0.6)    ax.xaxis.grid(True, linestyle="--", linewidth=0.8, color=grid_color, alpha=0.5)    ax.spines["polar"].set_color("#333333")    ax.spines["polar"].set_linewidth(1.8)    theta = np.linspace(02 * np.pi, 720)    ax.plot(theta, np.full_like(theta, r_outer), color="#333333", linewidth=1.2, alpha=0.9, zorder=2)

网格设计要点:

  • 刻度位置:使用25%、50%、75%、100%四个位置,这是雷达图的标准设置
  • 格式优化f"{t:g}"自动去除不必要的零和小数点
  • 网格样式:使用灰色虚线,透明度适中,既清晰又不抢夺数据焦点
  • 外环实线:在网格最外层绘制一条实线,增强视觉边界

4.5 数据系列绘制

这是雷达图的核心部分,为每个模型绘制一条多边形线,并填充淡色区域。所有模型使用统一的圆形标记,只通过颜色区分。

# 统一圆点 marker(图例与 RF 一致),只变化颜色for i in range(n_models):        row = values[i, :]        row_closed = np.concatenate([row, [row[0]]])        c = line_colors_local[i % len(line_colors_local)]        ax.fill(angles_closed, row_closed, color=c, alpha=0.05, zorder=3)        ax.plot(            angles_closed,            row_closed,            color=c,            linewidth=1.6,            marker="o",            markersize=5,            markerfacecolor=c,            markeredgecolor="white",            markeredgewidth=0.9,            zorder=4,        )

绘制策略:

  • 填充区域:使用ax.fill绘制填充区域,alpha=0.05使得填充非常淡,不会遮挡其他数据
  • 线条样式:线宽1.6,确保清晰可见
  • 标记设计
    • 统一使用圆形标记(marker="o"
    • 标记大小适中(markersize=5
    • 白色边框(markeredgecolor="white")增强对比度
    • 边框宽度0.9,使标记更加精致
  • 图层顺序:使用zorder参数控制绘制顺序,确保标记在最上层

五、批量导出多套配色方案

在实际应用中,经常需要尝试不同的配色方案,以适应不同的论文风格或期刊要求。export_multi_palette函数实现了批量生成多套配色方案的功能。

5.1 配色方案定义

定义了4套不同的配色方案,每套都有其特点和适用场景。

defexport_multi_palette():    palettes = [        ("P1""Classic (Red/Blue/Orange/Green)", ["#C00000""#2E75B6""#E69F00""#2CA02C""#9467BD""#8C564B"]),        ("P2","Okabe-Ito",            ["#0072B2""#D55E00""#009E73""#CC79A7""#E69F00""#56B4E9""#F0E442""#000000"],        ),        ("P3""Tableau(tab10)""tab10"),        ("P4""Dark2""Dark2"),    ]    ring_colors_local = ["#B7DEE8","#C5D9F1","#F4CCCC","#F9CB9C","#FFE599","#D9EAD3","#D0E0E3","#D9D2E9","#FCE5CD","#FFF2CC","#EAD1DC","#D0CECE",    ]

配色方案说明:

  • P1 - Classic:经典配色,使用红、蓝、橙、绿等常见颜色,适合大多数场景
  • P2 - Okabe-Ito:色盲友好配色方案,经过科学设计,确保色盲患者也能区分
  • P3 - Tableau:Tableau软件的标准配色,专业且美观
  • P4 - Dark2:较深的色调,适合需要强调对比的场景

外环颜色:使用柔和的 pastel 色调,12种颜色循环使用,确保外环美观且不抢夺数据焦点。

六、总结

  1. 准备数据:将模型性能数据保存为CSV文件,格式如前文所示
  2. 修改文件名:如果CSV文件名不是model_performance.csv,修改CSV_NAME变量
  3. 运行程序:直接运行Python脚本
  4. 查看结果:程序会在当前目录生成5张图片(四个配色单图和一个总图):
    • model_performance_radar_P1.jpeg
    • model_performance_radar_P2.jpeg
    • model_performance_radar_P3.jpeg
    • model_performance_radar_P4.jpeg
    • model_performance_radar_4palettes.jpeg

现在绘图代码都不支持免费获取了,20/篇文章,同时欢迎加入小编科研绘图VIP群,198/年,保证每年更新40篇以上的科研绘图相关文章,涵盖机器学习模型(回归和分类)的shap分析、还有各种如皮尔逊分析等相关的图,以及期刊复现图,源代码直接复制或者打开就能绘图。同时进群还赠送微信推文中所有绘图代码以及科研绘图SHAP分析软件和依赖图分析软件,且免费更新使用。后期还会免费赠送一些科研绘图小软件,还有拼图软件(开发中)!!!!

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-08 04:19:40 HTTP/2.0 GET : https://f.mffb.com.cn/a/468323.html
  2. 运行时间 : 0.155585s [ 吞吐率:6.43req/s ] 内存消耗:4,595.14kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=58aab25b03085c35f37444a570d8cfee
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000579s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000940s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000326s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.007310s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000521s ]
  6. SELECT * FROM `set` [ RunTime:0.000193s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000628s ]
  8. SELECT * FROM `article` WHERE `id` = 468323 LIMIT 1 [ RunTime:0.015900s ]
  9. UPDATE `article` SET `lasttime` = 1770495580 WHERE `id` = 468323 [ RunTime:0.024664s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000526s ]
  11. SELECT * FROM `article` WHERE `id` < 468323 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.009324s ]
  12. SELECT * FROM `article` WHERE `id` > 468323 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.012879s ]
  13. SELECT * FROM `article` WHERE `id` < 468323 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002028s ]
  14. SELECT * FROM `article` WHERE `id` < 468323 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.007263s ]
  15. SELECT * FROM `article` WHERE `id` < 468323 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.008286s ]
0.157143s