当前位置:首页>python>用 Python 做相关性分析:三种高级科研图带你把变量关系看得更清楚(含代码)

用 Python 做相关性分析:三种高级科研图带你把变量关系看得更清楚(含代码)

  • 2026-07-02 16:36:09
用 Python 做相关性分析:三种高级科研图带你把变量关系看得更清楚(含代码)
案例代码见文末,感谢您关注PFC小姐姐,麻烦您多多对推文点赞、收藏及转发,并衷心希望您多多指教🙏,帮助PFC小姐姐进步提升。

引言

在科研数据分析中,相关性往往是最早需要回答的问题之一。很多时候,我们手里并不是只有两个变量,而是一组彼此交织、相互影响的参数体系。这个时候,单纯看几组散点图或者直接列一个相关系数表,往往很难快速把整体结构看明白。真正有用的相关性分析,不只是算出几个系数,而是要进一步回答:哪些变量彼此联系最紧密,哪些变量之间是正相关还是负相关,不同变量能不能分成若干结构相近的模块,以及这些关系在整体网络中呈现出怎样的组织方式。基于 Python,可以把这些原本分散的信息整理成更直观、更有层次感的科研图。下面这组示例分别从热图、气泡相关图和网络图三个角度出发,对同一批变量之间的相关关系进行可视化表达,用不同方式把变量之间的联系呈现出来。

1、Pearson 相关性热图

该图主要用于从整体上观察变量两两之间的线性相关关系。图中每个方格对应一对变量,颜色表示相关系数的正负和强弱,暖色表示正相关,冷色表示负相关,颜色越深说明相关程度越强。与此同时,格子中的数字又给出了具体的相关系数值,因此读图时既能快速看到整体分布格局,也能直接读出某一对变量的定量关系。这类图最大的优势在于,它适合做“全局扫描”,可以让人一眼看出哪些变量成组出现正相关,哪些变量又与另一类变量表现出稳定的负相关,因此非常适合作为相关性分析的第一步。

2、Spearman 气泡相关图

该图更强调相关关系的层次感和视觉对比。与热图不同,这里不仅用颜色表示相关系数的正负和大小,还额外用气泡面积表示相关程度的强弱,因此一眼看过去,最显眼的大气泡往往就是最值得关注的变量关系。由于 Spearman 相关更适合衡量单调关系,所以它对于一些不完全服从线性分布、但仍存在稳定变化趋势的数据会更有解释力。这张图的特点在于,它把“相关方向”和“相关强度”同时做了双重编码,使图面读起来更灵活,也更适合突出重点变量对之间的关系。

3、相关性网络图

该图则进一步把变量关系从“矩阵视角”转成了“结构视角”。在这张图里,每个节点代表一个变量,节点之间的连线表示它们之间存在较强的相关关系,线的颜色区分正相关和负相关,线宽则表示相关程度的大小。相比前两张图,这种表达方式更适合回答“哪些变量天然形成一个模块”“哪个变量在整个系统里连接最广”“不同类型的变量群之间是怎样相互联系的”这类问题。

    具体Python如下:

    import osimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport matplotlib as mplfrom matplotlib.colors import LinearSegmentedColormap, TwoSlopeNorm, Normalizefrom matplotlib.lines import Line2Dfrom scipy import statsimport networkx as nxOUTDIR = "correlation_analysis_output"os.makedirs(OUTDIR, exist_ok=True)plt.rcParams["font.family"] = "DejaVu Sans"plt.rcParams["axes.unicode_minus"] = FalseFIG_DPI = 240corr_cmap = LinearSegmentedColormap.from_list(    "corr_custom",    ["#33658A""#86BBD8""#F7F7F7""#F6AE2D""#D1495B"],    N=256)corr_cmap.set_bad(color="white")def generate_demo_data(n=260, seed=2026):    rng = np.random.default_rng(seed)    z1 = rng.normal(01, n)    z2 = rng.normal(01, n)    z3 = rng.normal(01, n)    stress = 1.00 * z1 + 0.20 * z2 + rng.normal(00.35, n)    strain = 0.82 * stress + rng.normal(00.30, n)    porosity = -0.68 * stress + 0.22 * z3 + rng.normal(00.38, n)    density = -0.72 * porosity + rng.normal(00.28, n)    permeability = np.exp(0.55 * porosity + rng.normal(00.22, n))   # monotonic nonlinear    cohesion = 0.55 * density + 0.18 * z2 + rng.normal(00.35, n)    friction = 0.48 * cohesion - 0.25 * z3 + rng.normal(00.32, n)    velocity = 0.58 * stress - 0.42 * friction + 0.20 * z2 + rng.normal(00.35, n)    energy = 0.64 * velocity + 0.31 * stress + rng.normal(00.33, n)    damage = -0.52 * cohesion + 0.63 * strain + 0.25 * z3 + rng.normal(00.34, n)    df = pd.DataFrame({        "Stress": stress,        "Strain": strain,        "Porosity": porosity,        "Density": density,        "Permeab.": permeability,        "Cohesion": cohesion,        "Friction": friction,        "Velocity": velocity,        "Energy": energy,        "Damage": damage    })    return df# 2. Correlation calculationdef correlation_and_pvalues(df, method="pearson"):    cols = df.columns    n = len(cols)    corr = pd.DataFrame(np.eye(n), index=cols, columns=cols)    pval = pd.DataFrame(np.zeros((n, n)), index=cols, columns=cols)    for i in range(n):        for j in range(i + 1, n):            x = df.iloc[:, i]            y = df.iloc[:, j]            if method == "pearson":                r, p = stats.pearsonr(x, y)            elif method == "spearman":                r, p = stats.spearmanr(x, y)            else:                raise ValueError("method must be 'pearson' or 'spearman'")            corr.iloc[i, j] = corr.iloc[j, i] = r            pval.iloc[i, j] = pval.iloc[j, i] = p    return corr, pvaldef partial_correlation(df):    X = (df - df.mean()) / df.std(ddof=0)    X = X.values    cov = np.cov(X, rowvar=False)    prec = np.linalg.inv(cov)    d = np.sqrt(np.diag(prec))    pcorr = -prec / np.outer(d, d)    np.fill_diagonal(pcorr, 1.0)    return pd.DataFrame(pcorr, index=df.columns, columns=df.columns)def sig_star(p):    if p < 0.001:        return "***"    elif p < 0.01:        return "**"    elif p < 0.05:        return "*"    else:        return ""# 3. Figure 1: Pearson heatmapdef plot_pearson_heatmap(corr, pval, save_path):    data = corr.values.copy()    mask = np.triu(np.ones_like(data, dtype=bool), k=1)    masked = np.ma.masked_where(mask, data)    fig, ax = plt.subplots(figsize=(10.28.6), dpi=FIG_DPI, facecolor="white")    ax.set_facecolor("white")    im = ax.imshow(        masked,        cmap=corr_cmap,        norm=TwoSlopeNorm(vmin=-1, vcenter=0, vmax=1)    )    n = corr.shape[0]    labels = corr.columns.tolist()    ax.set_xticks(range(n))    ax.set_yticks(range(n))    ax.set_xticklabels(labels, rotation=35, ha="right", fontsize=10)    ax.set_yticklabels(labels, fontsize=10)    ax.set_xticks(np.arange(-.5, n, 1), minor=True)    ax.set_yticks(np.arange(-.5, n, 1), minor=True)    ax.grid(which="minor", color="#d9d9d9", linestyle="-", linewidth=0.8, alpha=0.8)    ax.tick_params(which="minor", bottom=False, left=False)    for i in range(n):        for j in range(n):            if i >= j:                val = corr.iloc[i, j]                if i == j:                    txt = "1.00"                else:                    txt = f"{val:.2f}{sig_star(pval.iloc[i, j])}"                text_color = "white" if abs(val) >= 0.55 else "#222222"                ax.text(j, i, txt, ha="center", va="center", fontsize=9, color=text_color)    ax.set_title("Pearson Correlation Heatmap", fontsize=18, pad=16, fontweight="bold")    cbar = fig.colorbar(im, ax=ax, pad=0.02, fraction=0.046)    cbar.set_label("Pearson r", fontsize=11)    cbar.ax.tick_params(labelsize=9)    plt.tight_layout()    plt.savefig(save_path, bbox_inches="tight", facecolor="white")    plt.show()# 4. Figure 2: Spearman bubble corrplotdef plot_spearman_bubble(corr, pval, save_path):    n = corr.shape[0]    labels = corr.columns.tolist()    fig, ax = plt.subplots(figsize=(10.48.8), dpi=FIG_DPI, facecolor="white")    ax.set_facecolor("#fbfcfe")    ax.set_xlim(-0.5, n - 0.5)    ax.set_ylim(n - 0.5, -0.5)    # grid    for k in range(n + 1):        ax.axhline(k - 0.5, color="#d8dee9", lw=0.9, zorder=0)        ax.axvline(k - 0.5, color="#d8dee9", lw=0.9, zorder=0)    norm = Normalize(vmin=-1, vmax=1)    xs, ys, sizes, colors = [], [], [], []    sig_x, sig_y, sig_txt = [], [], []    for i in range(n):        for j in range(n):            if i > j:                r = corr.iloc[i, j]                p = pval.iloc[i, j]                xs.append(j)                ys.append(i)                sizes.append(1800 * abs(r) + 40)                colors.append(r)                s = sig_star(p)                if s:                    sig_x.append(j)                    sig_y.append(i)                    sig_txt.append(s)    sc = ax.scatter(        xs, ys,        s=sizes,        c=colors,        cmap=corr_cmap,        norm=norm,        edgecolors="white",        linewidths=1.0,        alpha=0.96,        zorder=3    )    for x, y, s in zip(sig_x, sig_y, sig_txt):        ax.text(x, y, s, ha="center", va="center", fontsize=10, color="black", zorder=4)    ax.set_xticks(range(n))    ax.set_yticks(range(n))    ax.set_xticklabels(labels, rotation=35, ha="left", fontsize=10)    ax.set_yticklabels(labels, fontsize=10)    ax.xaxis.tick_top()    ax.set_title("Spearman Bubble Correlation Plot", fontsize=18, pad=20, fontweight="bold")    size_vals = [0.20.50.8]    marker_sizes = [6912]  # 这里直接控制图例圆点大小    size_handles = [        Line2D(            [0], [0],            marker='o',            linestyle='',            markerfacecolor="#90caf9",            markeredgecolor="white",            markeredgewidth=1.0,            markersize=ms        )        for ms in marker_sizes    ]    leg1 = ax.legend(        size_handles,        [f"|ρ| = {v:.1f}" for v in size_vals],        title="Effect Size",        loc="upper left",        bbox_to_anchor=(0.900.10),  # 更往右下角        frameon=True,        fontsize=8,        title_fontsize=9,        borderpad=0.25,        labelspacing=0.25,        handletextpad=0.5,        borderaxespad=0.2,        handlelength=1.0,        framealpha=0.95    )    ax.add_artist(leg1)    cbar = fig.colorbar(sc, ax=ax, pad=0.02, fraction=0.046)    cbar.set_label("Spearman ρ", fontsize=11)    cbar.ax.tick_params(labelsize=9)    plt.tight_layout()    plt.savefig(save_path, bbox_inches="tight", facecolor="white")    plt.show()# 5. Figure 3: Partial correlation networkdef plot_partialcorr_network(pcorr, save_path, threshold=0.18):    cols = pcorr.columns.tolist()    G = nx.Graph()    for c in cols:        G.add_node(c)    for i in range(len(cols)):        for j in range(i + 1len(cols)):            w = pcorr.iloc[i, j]            if abs(w) >= threshold:                G.add_edge(cols[i], cols[j], weight=w, abs_weight=abs(w))    node_strength = {}    for node in G.nodes():        strength = sum(abs(G[node][nbr]["weight"]) for nbr in G.neighbors(node))        node_strength[node] = strength    vals = np.array(list(node_strength.values()))    if len(vals) == 0:        vals = np.array([1.0])    vmin = vals.min()    vmax = vals.max() if vals.max() > vals.min() else vals.min() + 1e-6    node_cmap = mpl.cm.YlGnBu    node_norm = Normalize(vmin=vmin, vmax=vmax)    node_sizes = []    node_colors = []    for node in G.nodes():        s = node_strength[node]        size = 1200 + 2600 * (s - vmin) / (vmax - vmin + 1e-12)        node_sizes.append(size)        node_colors.append(node_cmap(node_norm(s)))    pos = nx.spring_layout(G, seed=42, weight="abs_weight", k=1.3 / np.sqrt(max(len(G.nodes()), 1)))    fig, ax = plt.subplots(figsize=(10.88.4), dpi=FIG_DPI, facecolor="white")    ax.set_facecolor("#f9fbfd")    for u, v, d in G.edges(data=True):        w = d["weight"]        color = "#d1495b" if w > 0 else "#33658A"        width = 1.2 + 5.8 * abs(w)        alpha = 0.25 + 0.65 * abs(w)        nx.draw_networkx_edges(            G, pos, edgelist=[(u, v)],            width=width,            edge_color=color,            alpha=alpha,            ax=ax        )    nx.draw_networkx_nodes(        G, pos,        node_size=node_sizes,        node_color=node_colors,        edgecolors="white",        linewidths=1.6,        ax=ax    )    nx.draw_networkx_labels(        G, pos,        font_size=10,        font_color="#1f2937",        font_weight="bold",        bbox=dict(boxstyle="round,pad=0.24", facecolor="white", edgecolor="none", alpha=0.82),        ax=ax    )    ax.set_title("Partial Correlation Network", fontsize=18, pad=14, fontweight="bold")    ax.axis("off")    # legends    edge_legend = [        Line2D([0], [0], color="#d1495b", lw=2.8, label="Positive partial corr."),        Line2D([0], [0], color="#33658A", lw=2.8, label="Negative partial corr.")    ]    leg = ax.legend(handles=edge_legend, loc="upper left", frameon=True, fontsize=9)    ax.add_artist(leg)    sm = mpl.cm.ScalarMappable(cmap=node_cmap, norm=node_norm)    sm.set_array([])    cbar = fig.colorbar(sm, ax=ax, pad=0.02, fraction=0.045)    cbar.set_label("Node Strength", fontsize=11)    cbar.ax.tick_params(labelsize=9)    plt.tight_layout()    plt.savefig(save_path, bbox_inches="tight", facecolor="white")# 6. Maindef main():    df = generate_demo_data()    # save demo data    df.to_csv(os.path.join(OUTDIR, "demo_correlation_data.csv"), index=False)    pear_corr, pear_p = correlation_and_pvalues(df, method="pearson")    spea_corr, spea_p = correlation_and_pvalues(df, method="spearman")    pcorr = partial_correlation(df)    plot_pearson_heatmap(        pear_corr, pear_p,        os.path.join(OUTDIR, "fig1_pearson_heatmap.png")    )    plot_spearman_bubble(        spea_corr, spea_p,        os.path.join(OUTDIR, "fig2_spearman_bubble.png")    )    plot_partialcorr_network(        pcorr,        os.path.join(OUTDIR, "fig3_partialcorr_network.png"),        threshold=0.18    )if __name__ == "__main__":    main()

    特别声明:

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

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

    最新文章

    随机文章

    基本 文件 流程 错误 SQL 调试
    1. 请求信息 : 2026-07-04 07:02:34 HTTP/2.0 GET : https://f.mffb.com.cn/a/491132.html
    2. 运行时间 : 0.138793s [ 吞吐率:7.20req/s ] 内存消耗:4,582.22kb 文件加载:140
    3. 缓存信息 : 0 reads,0 writes
    4. 会话信息 : SESSION_ID=0eec66a786b64a26c11dbf0096fa5684
    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.000554s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
    2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000850s ]
    3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.001380s ]
    4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.002143s ]
    5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000658s ]
    6. SELECT * FROM `set` [ RunTime:0.002054s ]
    7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000760s ]
    8. SELECT * FROM `article` WHERE `id` = 491132 LIMIT 1 [ RunTime:0.004927s ]
    9. UPDATE `article` SET `lasttime` = 1783119754 WHERE `id` = 491132 [ RunTime:0.003751s ]
    10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000301s ]
    11. SELECT * FROM `article` WHERE `id` < 491132 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001144s ]
    12. SELECT * FROM `article` WHERE `id` > 491132 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.002076s ]
    13. SELECT * FROM `article` WHERE `id` < 491132 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.003302s ]
    14. SELECT * FROM `article` WHERE `id` < 491132 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.012494s ]
    15. SELECT * FROM `article` WHERE `id` < 491132 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.032965s ]
    0.140358s