当前位置:首页>python>科研数据组间差异怎么画?Python 用雨云图和效应量估计图讲清楚(含代码)

科研数据组间差异怎么画?Python 用雨云图和效应量估计图讲清楚(含代码)

  • 2026-07-03 02:16:29
科研数据组间差异怎么画?Python 用雨云图和效应量估计图讲清楚(含代码)
案例代码见文末,感谢您关注PFC小姐姐,麻烦您多多对推文点赞、收藏及转发,并衷心希望您多多指教🙏,帮助PFC小姐姐进步提升。

引言

在科研数据分析中,我们经常需要比较不同组别之间的差异,例如不同处理条件下的材料强度、不同模型的预测误差、不同试验工况下的变形响应,或者不同样本类型之间的参数变化。很多时候,大家习惯使用柱状图、箱线图或均值加误差棒来展示结果,但这些图往往只能表达很有限的信息。比如柱状图通常只展示均值,容易掩盖数据本身的离散程度;箱线图虽然能显示中位数和四分位范围,但无法直观看到每个样本点的真实分布;而单纯依赖 P 值判断差异是否显著,也容易忽略一个更重要的问题:两组之间到底差了多少?这个差异是否足够大?这个差异的不确定性范围又有多宽?因此,本文用 Python 绘制两张更适合科研表达的统计图:第一张是雨云图,用来同时展示数据分布、原始样本点和统计摘要;第二张是效应量估计图,用来展示两组均值差及其 Bootstrap 置信区间。相比传统的箱线图和显著性标注,这两类图可以更完整地表达数据本身和组间差异。

1、雨云图——同时展示分布、散点和统计摘要

该图可以理解为“半小提琴图 + 箱线图 + 原始散点图”的组合。图中每一行代表一个分组,半小提琴部分表示该组数据的概率密度分布,散点表示每一个原始样本,箱体表示四分位范围和中位数,黑色菱形点表示均值。这张图的优势在于,它不仅能告诉我们每组数据的中心位置,还能展示数据的真实分布形态。比如某一组数据是否更分散,是否存在偏态分布,是否有局部聚集,是否有个别离群点,都可以从图中直接观察出来。相比普通箱线图,雨云图保留了更多原始信息。箱线图只能概括中位数、四分位数和异常点,但看不到样本点具体如何分布;而雨云图既能保持统计摘要,又能展示每个样本的真实位置。因此,在样本量不算特别大、又希望展示完整数据特征时,雨云图比普通箱线图更适合用于论文和汇报。

2、效应量估计图——组间差异到底有多大?

该图则可以理解为一种比“显著性星号”更直观的组间差异表达方式。图的左侧展示两组原始数据分布,右侧展示两组均值差的 Bootstrap 分布,并给出均值差及其 95% 置信区间。这张图关注的不是简单地问“有没有显著差异”,而是进一步回答“差异到底有多大”。在很多科研分析中,P 值只能告诉我们差异在统计意义上是否显著,但不能直接说明这个差异是否具有实际意义。效应量估计图则把差异本身画出来,让读者可以直接看到处理组相对于对照组到底提高了多少,或者降低了多少。右侧的分布表示通过 Bootstrap 重采样得到的均值差分布。黑色点表示观测到的均值差,竖线表示 95% 置信区间。如果置信区间很窄,说明差异估计比较稳定;如果置信区间很宽,说明结果不确定性较大。若置信区间远离 0,通常说明两组之间的差异较为明确;若置信区间跨过 0,则说明差异方向或大小仍存在较大不确定性。

    具体Python如下:

    import osimport numpy as npimport matplotlib.pyplot as pltfrom matplotlib.patches import Rectanglefrom matplotlib.gridspec import GridSpecnp.random.seed(2026)plt.rcParams["font.family"] = "Times New Roman"plt.rcParams["axes.unicode_minus"] = Falseplt.rcParams["figure.dpi"] = 160plt.rcParams["savefig.dpi"] = 600out_dir = "python_statistics_advanced_figures"os.makedirs(out_dir, exist_ok=True)# 1. 随机生成科研分组数据#    假设这是不同处理条件下的材料强度、位移响应、模型误差等n = 55control = np.random.normal(loc=52, scale=6.0, size=n)group_a = np.random.normal(loc=56, scale=6.5, size=n)group_b = (    np.random.normal(loc=61, scale=6.3, size=n)    + np.random.gamma(shape=1.5, scale=1.2, size=n) * 0.6)group_c = (    np.random.normal(loc=66, scale=7.0, size=n)    + np.random.gamma(shape=2.0, scale=1.5, size=n) * 0.8)groups = [control, group_a, group_b, group_c]group_names = ["Control""Low treatment""Medium treatment""High treatment"]colors = ["#8DA0CB""#66C2A5""#FC8D62""#E78AC3"]# 2. 手写一个简单的一维 KDE,避免依赖 scipydef kde_1d(data, grid, bandwidth=None):    data = np.asarray(data)    data = data[np.isfinite(data)]    n = len(data)    std = np.std(data, ddof=1)    if bandwidth is None:        bandwidth = 1.06 * std * n ** (-1 / 5)    if bandwidth <= 1e-8:        bandwidth = 1.0    diff = (grid[:, None] - data[None, :]) / bandwidth    density = np.exp(-0.5 * diff ** 2).mean(axis=1)    density = density / (bandwidth * np.sqrt(2 * np.pi))    return density# 3. 图1:雨云图 Raincloud Plot#    半小提琴 + 箱线 + 原始散点def draw_raincloud_plot(groups, group_names, colors):    all_data = np.concatenate(groups)    x_min = np.min(all_data) - 8    x_max = np.max(all_data) + 8    fig, ax = plt.subplots(figsize=(9.86.2))    for i, data in enumerate(groups):        y0 = i        # KDE 半小提琴        grid = np.linspace(x_min, x_max, 500)        density = kde_1d(data, grid)        density = density / density.max() * 0.36        ax.fill_between(            grid,            y0,            y0 + density,            color=colors[i],            alpha=0.65,            linewidth=0        )        ax.plot(            grid,            y0 + density,            color=colors[i],            linewidth=1.4        )        # 原始散点        jitter = np.random.uniform(-0.0750.075, size=len(data))        y_scatter = y0 - 0.24 + jitter        ax.scatter(            data,            y_scatter,            s=28,            color=colors[i],            edgecolor="white",            linewidth=0.45,            alpha=0.78,            zorder=4        )        # 箱线统计        q1, q2, q3 = np.percentile(data, [255075])        p5, p95 = np.percentile(data, [595])        mean_val = np.mean(data)        box_y = y0 - 0.05        box_h = 0.16        # 箱体        rect = Rectangle(            (q1, box_y - box_h / 2),            q3 - q1,            box_h,            facecolor="white",            edgecolor="black",            linewidth=1.0,            zorder=5        )        ax.add_patch(rect)        # 中位数        ax.plot(            [q2, q2],            [box_y - box_h / 2, box_y + box_h / 2],            color="black",            linewidth=1.4,            zorder=6        )        # 5%–95% whisker        ax.plot(            [p5, q1],            [box_y, box_y],            color="black",            linewidth=1.0,            zorder=5        )        ax.plot(            [q3, p95],            [box_y, box_y],            color="black",            linewidth=1.0,            zorder=5        )        ax.plot(            [p5, p5],            [box_y - box_h * 0.35, box_y + box_h * 0.35],            color="black",            linewidth=1.0,            zorder=5        )        ax.plot(            [p95, p95],            [box_y - box_h * 0.35, box_y + box_h * 0.35],            color="black",            linewidth=1.0,            zorder=5        )        # 均值点        ax.scatter(            mean_val,            box_y,            s=42,            marker="D",            color="black",            edgecolor="white",            linewidth=0.5,            zorder=7        )    ax.set_yticks(np.arange(len(group_names)))    ax.set_yticklabels(group_names, fontsize=12)    ax.set_xlabel("Measured response", fontsize=13)    ax.set_title(        "Raincloud Plot: Distribution, Raw Data and Summary Statistics",        fontsize=16,        pad=14    )    ax.grid(axis="x", alpha=0.25)    ax.set_xlim(x_min, x_max)    ax.set_ylim(-0.65len(groups) - 0.25)    ax.spines["top"].set_visible(False)    ax.spines["right"].set_visible(False)    ax.text(        0.02,        0.97,        "Half violin: density distribution\nBox: IQR and median\nDots: individual samples\nDiamond: mean",        transform=ax.transAxes,        ha="left",        va="top",        fontsize=10.5,        bbox=dict(            boxstyle="round,pad=0.35",            facecolor="white",            edgecolor="#999999",            alpha=0.88        )    )    plt.tight_layout()    plt.savefig(        os.path.join(out_dir, "01_raincloud_plot.png"),        bbox_inches="tight",        facecolor="white"    )draw_raincloud_plot(groups, group_names, colors)# 4. 图2:效应量估计图 Estimation Plot#    左侧:原始数据#    右侧:bootstrap 均值差分布def bootstrap_mean_difference(x, y, n_boot=6000):    """    bootstrap 计算两组均值差:mean(y) - mean(x)    """    x = np.asarray(x)    y = np.asarray(y)    boot_diff = np.zeros(n_boot)    for i in range(n_boot):        xb = np.random.choice(x, size=len(x), replace=True)        yb = np.random.choice(y, size=len(y), replace=True)        boot_diff[i] = np.mean(yb) - np.mean(xb)    return boot_diffdef draw_estimation_plot(control, treatment):    boot_diff = bootstrap_mean_difference(control, treatment, n_boot=6000)    observed_diff = np.mean(treatment) - np.mean(control)    ci_low, ci_high = np.percentile(boot_diff, [2.597.5])    fig = plt.figure(figsize=(10.56.2))    gs = GridSpec(        1,        2,        width_ratios=[1.151.0],        wspace=0.30    )    ax_raw = fig.add_subplot(gs[00])    ax_eff = fig.add_subplot(gs[01])    # 左侧:原始数据    x0 = np.random.normal(loc=0, scale=0.035, size=len(control))    x1 = np.random.normal(loc=1, scale=0.035, size=len(treatment))    ax_raw.scatter(        x0,        control,        s=38,        color="#8DA0CB",        edgecolor="white",        linewidth=0.55,        alpha=0.82,        label="Control"    )    ax_raw.scatter(        x1,        treatment,        s=38,        color="#E78AC3",        edgecolor="white",        linewidth=0.55,        alpha=0.82,        label="High treatment"    )    # 均值与95% CI    for xpos, data, color in zip([01], [control, treatment], ["#8DA0CB""#E78AC3"]):        mean_val = np.mean(data)        se = np.std(data, ddof=1) / np.sqrt(len(data))        ci = 1.96 * se        ax_raw.errorbar(            xpos,            mean_val,            yerr=ci,            fmt="o",            color="black",            ecolor="black",            elinewidth=1.8,            capsize=6,            markersize=6,            zorder=6        )        ax_raw.hlines(            mean_val,            xpos - 0.18,            xpos + 0.18,            color="black",            linewidth=2.0,            zorder=5        )    ax_raw.set_xticks([01])    ax_raw.set_xticklabels(["Control""High\ntreatment"], fontsize=12)    ax_raw.set_ylabel("Measured response", fontsize=13)    ax_raw.set_title("Raw Data", fontsize=15, pad=12)    ax_raw.grid(axis="y", alpha=0.25)    ax_raw.spines["top"].set_visible(False)    ax_raw.spines["right"].set_visible(False)    # 右侧:bootstrap 效应量分布    grid = np.linspace(        np.min(boot_diff) - 1.0,        np.max(boot_diff) + 1.0,        500    )    density = kde_1d(boot_diff, grid)    density = density / density.max() * 0.38    # 横向半小提琴:y 是均值差,x 是密度    ax_eff.fill_betweenx(        grid,        0,        density,        color="#B3B3E6",        alpha=0.75,        linewidth=0    )    ax_eff.plot(        density,        grid,        color="#5E5EAA",        linewidth=1.5    )    # 观测效应量    ax_eff.scatter(        0,        observed_diff,        s=62,        color="black",        zorder=6,        label="Observed mean difference"    )    # 95% CI    ax_eff.plot(        [00],        [ci_low, ci_high],        color="black",        linewidth=2.2,        zorder=5    )    ax_eff.plot(        [-0.0350.035],        [ci_low, ci_low],        color="black",        linewidth=2.0    )    ax_eff.plot(        [-0.0350.035],        [ci_high, ci_high],        color="black",        linewidth=2.0    )    ax_eff.axhline(        0,        color="gray",        linestyle="--",        linewidth=1.3,        alpha=0.9    )    ax_eff.text(        0.02,        0.96,        f"Mean difference = {observed_diff:.2f}\n95% CI [{ci_low:.2f}{ci_high:.2f}]",        transform=ax_eff.transAxes,        ha="left",        va="top",        fontsize=11,        bbox=dict(            boxstyle="round,pad=0.35",            facecolor="white",            edgecolor="#999999",            alpha=0.90        )    )    ax_eff.set_title("Bootstrap Effect Size", fontsize=15, pad=12)    ax_eff.set_xlabel("Bootstrap density", fontsize=13)    ax_eff.set_ylabel("Mean difference\nHigh treatment - Control", fontsize=13)    ax_eff.set_xlim(-0.040.48)    ax_eff.grid(axis="y", alpha=0.25)    ax_eff.spines["top"].set_visible(False)    ax_eff.spines["right"].set_visible(False)    ax_eff.spines["bottom"].set_visible(False)    ax_eff.set_xticks([])    fig.suptitle(        "Estimation Plot: From Statistical Significance to Effect Size",        fontsize=16,        y=0.98    )    plt.tight_layout()    plt.savefig(        os.path.join(out_dir, "02_estimation_plot.png"),        bbox_inches="tight",        facecolor="white"    )draw_estimation_plot(control, group_c)

    特别声明:

    以上代码与文案均为网上资料整合而成,仅供广大同行们参考学习,如有侵权请联系删除。

    如有其他需要,欢迎关注我的咸鱼号:pfc小姐姐

    最新文章

    随机文章

    基本 文件 流程 错误 SQL 调试
    1. 请求信息 : 2026-07-04 03:10:43 HTTP/2.0 GET : https://f.mffb.com.cn/a/500087.html
    2. 运行时间 : 0.285090s [ 吞吐率:3.51req/s ] 内存消耗:4,901.61kb 文件加载:140
    3. 缓存信息 : 0 reads,0 writes
    4. 会话信息 : SESSION_ID=f5a8a8189e0c5e57f112d12fe51cfb40
    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.000976s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
    2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001672s ]
    3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000752s ]
    4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000658s ]
    5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001267s ]
    6. SELECT * FROM `set` [ RunTime:0.003904s ]
    7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001534s ]
    8. SELECT * FROM `article` WHERE `id` = 500087 LIMIT 1 [ RunTime:0.023721s ]
    9. UPDATE `article` SET `lasttime` = 1783105843 WHERE `id` = 500087 [ RunTime:0.048282s ]
    10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.003636s ]
    11. SELECT * FROM `article` WHERE `id` < 500087 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.027232s ]
    12. SELECT * FROM `article` WHERE `id` > 500087 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.004631s ]
    13. SELECT * FROM `article` WHERE `id` < 500087 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.010868s ]
    14. SELECT * FROM `article` WHERE `id` < 500087 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.022428s ]
    15. SELECT * FROM `article` WHERE `id` < 500087 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.042440s ]
    0.288786s