当前位置:首页>python>Python 绘制多变量轨迹流线图(含代码)

Python 绘制多变量轨迹流线图(含代码)

  • 2026-06-29 11:47:27
Python 绘制多变量轨迹流线图(含代码)
案例代码见文末,感谢您关注PFC小姐姐,麻烦您多多对推文点赞、收藏及转发,并衷心希望您多多指教🙏,帮助PFC小姐姐进步提升。

引言

一些轨迹并不是一条简单的运动路径,它往往同时包含位置变化、速度变化、弯曲程度变化,以及所处背景场的空间差异。如果只是画普通轨迹线,能够看到路径走向,却很难进一步判断哪里速度更高、哪里转弯更剧烈、轨迹又与周围环境场之间存在怎样的关系。多变量轨迹流线图的价值就在于,它能够在一张图中同时整合轨迹本身和背景流场信息:轨迹的位置展示运动路径,颜色可以表示速度,线宽可以表示曲率,而背景的流线或标量场又能补充轨迹所处环境的整体结构。这样绘制出来的图,不只是比普通轨迹图更漂亮,更重要的是它能够在单图中承载更多科学信息。下面这组示例图基于同一组模拟轨迹数据,分别展示基础版和进阶版两种表达方式,用来说明如何从“看路径”进一步提升到“读结构、看关系、识别重点”。

1、基础版多变量轨迹流线图

下图主要突出轨迹与背景流场之间的基本关系。图中浅色流线表示整个区域内的背景速度场结构,而彩色轨迹则表示多个粒子或样本点在该流场中的运动路径。轨迹颜色沿路径连续变化,用来表示局部速度大小,因此读图时不仅能看出轨迹是如何被流场牵引、弯折和分散的,还能进一步识别哪一段运动较快、哪一段运动较慢。起点和终点的单独标记,则帮助读者快速判断轨迹的起始位置和演化方向。这个层级的重点在于先建立最基本的多变量表达:既看背景流场的整体格局,也看轨迹本身的运动过程,并通过颜色把速度信息融入轨迹线中,使图面比传统路径图具有更强的信息密度。

2、进阶版多变量轨迹流线图

在基础版的基础上进一步强化了轨迹与环境场的耦合表达。图中背景不再只是简单的流线,而是加入了标量场分布及其等值结构,使整个区域的空间异质性更加清晰;与此同时,轨迹颜色依然表示速度,但线宽进一步编码了曲率信息,因此轨迹中哪些区段运动更快、哪些区段弯曲更明显,都可以在同一张图中直接识别出来。相比图1,这一版本不再只是展示“轨迹如何走”,而是在进一步表达“轨迹经过了什么样的背景区域”“轨迹在哪些位置发生了显著弯折”“速度变化和路径形态之间是否存在对应关系”。

    具体Python如下:

    import osimport numpy as npimport matplotlib.pyplot as pltfrom matplotlib.collections import LineCollectionfrom matplotlib.colors import Normalizefrom matplotlib.cm import ScalarMappablefrom matplotlib.lines import Line2Dfrom matplotlib.colors import Normalize, LinearSegmentedColormap# 0. 全局设置OUTDIR = "trajectory_streamline_output"os.makedirs(OUTDIR, exist_ok=True)plt.rcParams["font.family"] = "DejaVu Sans"plt.rcParams["axes.unicode_minus"] = FalseXLIM = (-4.04.2)YLIM = (-3.23.2)# 自定义配色cmap_basic_track = LinearSegmentedColormap.from_list(    "basic_track",    ["#1d4e89""#2a9d8f""#e9c46a""#f4a261""#e76f51"],    N=256)cmap_adv_bg = LinearSegmentedColormap.from_list(    "adv_bg",    ["#f8fbff""#d9ecff""#a8d0f0""#6ea8d9""#3b82c4"],    N=256)cmap_adv_track = LinearSegmentedColormap.from_list(    "adv_track",    ["#4c1d95""#7c3aed""#06b6d4""#10b981""#fde047"],    N=256)# 1. 构造二维流场数据def velocity_field(x, y, t=0.0):    """    生成一个带有双涡旋 + 平移 + 波动扰动的二维速度场    支持标量或数组输入    """    x = np.asarray(x)    y = np.asarray(y)    t = np.asarray(t)    # 涡旋1    x1, y1 = -1.60.9    r1 = (x - x1) ** 2 + (y - y1) ** 2    g1 = 1.75    u1 = -g1 * (y - y1) * np.exp(-r1 / 2.3)    v1 =  g1 * (x - x1) * np.exp(-r1 / 2.3)    # 涡旋2(反向)    x2, y2 = 1.7, -0.75    r2 = (x - x2) ** 2 + (y - y2) ** 2    g2 = -1.35    u2 = -g2 * (y - y2) * np.exp(-r2 / 2.7)    v2 =  g2 * (x - x2) * np.exp(-r2 / 2.7)    # 整体平移 + 轻微时变扰动    u_bg = 0.42 + 0.10 * np.cos(1.45 * y + 0.25 * t)    v_bg = 0.16 * np.sin(1.10 * x - 0.30 * t)    u = u1 + u2 + u_bg    v = v1 + v2 + v_bg    return u, vdef scalar_field(x, y):    """    生成一个用于高级图背景的标量场(浓度/温度/势函数风格)    """    x = np.asarray(x)    y = np.asarray(y)    z = (        0.75        + 1.60 * np.exp(-((x + 1.2) ** 2 + (y + 1.35) ** 2) / 1.7)        + 1.10 * np.exp(-((x - 1.85) ** 2 + (y - 0.65) ** 2) / 2.0)        + 0.35 * np.sin(1.20 * x - 0.85 * y)        + 0.18 * np.cos(1.70 * y)    )    return z# 2. 轨迹积分(RK4)def rk4_step(x, y, t, dt):    u1, v1 = velocity_field(x, y, t)    k1x, k1y = dt * u1, dt * v1    u2, v2 = velocity_field(x + 0.5 * k1x, y + 0.5 * k1y, t + 0.5 * dt)    k2x, k2y = dt * u2, dt * v2    u3, v3 = velocity_field(x + 0.5 * k2x, y + 0.5 * k2y, t + 0.5 * dt)    k3x, k3y = dt * u3, dt * v3    u4, v4 = velocity_field(x + k3x, y + k3y, t + dt)    k4x, k4y = dt * u4, dt * v4    x_new = x + (k1x + 2 * k2x + 2 * k3x + k4x) / 6.0    y_new = y + (k1y + 2 * k2y + 2 * k3y + k4y) / 6.0    return x_new, y_newdef compute_curvature(x, y):    """    计算二维曲线离散曲率    """    x = np.asarray(x)    y = np.asarray(y)    dx = np.gradient(x)    dy = np.gradient(y)    ddx = np.gradient(dx)    ddy = np.gradient(dy)    denom = (dx * dx + dy * dy) ** 1.5 + 1e-12    kappa = np.abs(dx * ddy - dy * ddx) / denom    return kappadef integrate_trajectory(x0, y0, dt=0.04, n_steps=320):    """    从初始点出发积分一条轨迹    """    xs = [x0]    ys = [y0]    ts = [0.0]    x, y = x0, y0    for i in range(n_steps - 1):        t = i * dt        x_new, y_new = rk4_step(x, y, t, dt)        if (x_new < XLIM[0]) or (x_new > XLIM[1]) or (y_new < YLIM[0]) or (y_new > YLIM[1]):            break        xs.append(x_new)        ys.append(y_new)        ts.append(t + dt)        x, y = x_new, y_new    xs = np.array(xs)    ys = np.array(ys)    ts = np.array(ts)    u, v = velocity_field(xs, ys, ts)    speed = np.hypot(u, v)    conc = scalar_field(xs, ys)    curvature = compute_curvature(xs, ys)    return {        "x": xs,        "y": ys,        "t": ts,        "speed": speed,        "conc": conc,        "curvature": curvature    }def generate_seeds():    """    生成一组初始点    """    left_y = np.linspace(-2.52.511)    left_x = np.full_like(left_y, -3.4)    lower_x = np.linspace(-3.1, -1.44)    lower_y = np.full_like(lower_x, -2.7)    upper_x = np.linspace(-3.0, -1.63)    upper_y = np.full_like(upper_x, 2.7)    xs = np.concatenate([left_x, lower_x, upper_x])    ys = np.concatenate([left_y, lower_y, upper_y])    return list(zip(xs, ys))# 3. 画渐变轨迹def make_segments(x, y):    pts = np.array([x, y]).T.reshape(-112)    segs = np.concatenate([pts[:-1], pts[1:]], axis=1)    return segsdef add_colored_trajectory(ax, x, y, values, cmap, norm, linewidths=2.0, alpha=1.0, zorder=3):    segs = make_segments(x, y)    lc = LineCollection(segs, cmap=cmap, norm=norm)    lc.set_array(values[:-1])    if np.isscalar(linewidths):        lc.set_linewidth(linewidths)    else:        lc.set_linewidth(linewidths[:-1])    lc.set_alpha(alpha)    lc.set_capstyle("round")    lc.set_joinstyle("round")    lc.set_zorder(zorder)    ax.add_collection(lc)    return lc# 4. 基础版图def plot_basic(trajs, out_png):    xg = np.linspace(XLIM[0], XLIM[1], 220)    yg = np.linspace(YLIM[0], YLIM[1], 180)    X, Y = np.meshgrid(xg, yg)    U, V = velocity_field(X, Y, 0.0)    all_speed = np.concatenate([tr["speed"for tr in trajs])    speed_norm = Normalize(        vmin=np.percentile(all_speed, 5),        vmax=np.percentile(all_speed, 98)    )    fig, ax = plt.subplots(figsize=(10.27.8), dpi=220, facecolor="white")    ax.set_facecolor("white")    ax.streamplot(        X, Y, U, V,        color="#d7e3f0",        density=1.35,        linewidth=0.85,        arrowsize=0.65,        minlength=0.15,        zorder=1    )    last_lc = None    for tr in trajs:        x = tr["x"]        y = tr["y"]        speed = tr["speed"]        ax.plot(x, y, color="white", lw=3.2, alpha=0.95, zorder=2)        last_lc = add_colored_trajectory(            ax, x, y, speed,            cmap=cmap_basic_track,            norm=speed_norm,            linewidths=2.2,            alpha=0.98,            zorder=3        )        ax.scatter(x[0], y[0], s=26, facecolor="white", edgecolor="black", linewidth=0.6, zorder=4)        ax.scatter(x[-1], y[-1], s=24, facecolor="#334155", edgecolor="white", linewidth=0.5, zorder=4)    ax.set_xlim(XLIM)    ax.set_ylim(YLIM)    ax.set_aspect("equal", adjustable="box")    ax.set_xlabel("X", fontsize=12)    ax.set_ylabel("Y", fontsize=12)    ax.set_title("Basic Multivariable Trajectory Streamline Plot", fontsize=18, pad=14)    ax.grid(alpha=0.18, linestyle="--")    cbar = fig.colorbar(last_lc, ax=ax, pad=0.02, fraction=0.045)    cbar.set_label("Speed along trajectory", fontsize=11)    cbar.ax.tick_params(labelsize=9)    handles = [        Line2D([0], [0], marker="o", color="none", markerfacecolor="white",               markeredgecolor="black", markersize=6, label="Start point"),        Line2D([0], [0], marker="o", color="none", markerfacecolor="#334155",               markeredgecolor="white", markersize=6, label="End point")    ]    ax.legend(handles=handles, loc="upper left", fontsize=9, frameon=True)    plt.tight_layout()    plt.savefig(out_png, bbox_inches="tight", facecolor="white")# 5. 进阶版图def plot_advanced(trajs, out_png):    xg = np.linspace(XLIM[0], XLIM[1], 260)    yg = np.linspace(YLIM[0], YLIM[1], 220)    X, Y = np.meshgrid(xg, yg)    U, V = velocity_field(X, Y, 0.0)    C = scalar_field(X, Y)    all_speed = np.concatenate([tr["speed"for tr in trajs])    all_curv = np.concatenate([tr["curvature"for tr in trajs])    speed_norm = Normalize(        vmin=np.percentile(all_speed, 5),        vmax=np.percentile(all_speed, 98)    )    curv_low = np.percentile(all_curv, 8)    curv_high = np.percentile(all_curv, 95)    def map_width(kappa):        kk = np.clip((kappa - curv_low) / (curv_high - curv_low + 1e-12), 01)        return 1.1 + 3.6 * kk    fig, ax = plt.subplots(figsize=(10.88.0), dpi=240, facecolor="white")    ax.set_facecolor("#f8fbff")    cf = ax.contourf(        X, Y, C,        levels=20,        cmap=cmap_adv_bg,        alpha=0.96,        zorder=0    )    ax.contour(        X, Y, C,        levels=10,        colors="#64748b",        linewidths=0.45,        alpha=0.22,        zorder=1    )    ax.streamplot(        X, Y, U, V,        color=(0.380.490.620.22),        density=1.15,        linewidth=0.55,        arrowsize=0.55,        minlength=0.12,        zorder=2    )    last_lc = None    exposure = np.array([np.trapz(tr["conc"], tr["t"]) for tr in trajs])    top_ids = set(np.argsort(exposure)[-4:])    for i, tr in enumerate(trajs):        x = tr["x"]        y = tr["y"]        speed = tr["speed"]        curv = tr["curvature"]        widths = map_width(curv)        alpha = 0.84 if i in top_ids else 0.58        ax.plot(x, y, color=(1110.25), lw=np.max(widths) + 1.0, zorder=3)        last_lc = add_colored_trajectory(            ax, x, y, speed,            cmap=cmap_adv_track,            norm=speed_norm,            linewidths=widths,            alpha=alpha,            zorder=4        )        ax.scatter(x[0], y[0], s=20, facecolor="white", edgecolor="black", linewidth=0.55, zorder=5)        ax.scatter(x[-1], y[-1], s=22, facecolor="#0f172a", edgecolor="white", linewidth=0.55, zorder=5)    ax.set_xlim(XLIM)    ax.set_ylim(YLIM)    ax.set_aspect("equal", adjustable="box")    ax.set_xlabel("X", fontsize=12, color="black")    ax.set_ylabel("Y", fontsize=12, color="black")    ax.set_title("Advanced Multivariable Trajectory Streamline Plot", fontsize=18, color="black", pad=14)    ax.tick_params(colors="black", labelsize=10)    for spine in ax.spines.values():        spine.set_color((0000.18))    ax.grid(alpha=0.10, linestyle="--", color="gray")    cbar = fig.colorbar(last_lc, ax=ax, pad=0.02, fraction=0.045)    cbar.set_label("Speed along trajectory", fontsize=11, color="black")    cbar.ax.tick_params(labelsize=9, colors="black")    cbar.outline.set_edgecolor((0000.25))    handles = [        Line2D([0], [0], color="#7c3aed", lw=1.2, label="Low curvature"),        Line2D([0], [0], color="#06b6d4", lw=2.6, label="Medium curvature"),        Line2D([0], [0], color="#fde047", lw=4.2, label="High curvature"),        Line2D([0], [0], marker="o", color="none", markerfacecolor="white",               markeredgecolor="black", markersize=6, label="Start point"),        Line2D([0], [0], marker="o", color="none", markerfacecolor="#0f172a",               markeredgecolor="white", markersize=6, label="End point")    ]    leg = ax.legend(        handles=handles,        loc="upper left",        fontsize=9,        frameon=True,        facecolor=(1110.88),        edgecolor=(0000.15)    )    ax.text(        0.020.02,        "Background: scalar concentration field\n"        "Line color: speed\n"        "Line width: curvature",        transform=ax.transAxes,        fontsize=9.5,        color="black",        ha="left",        va="bottom",        bbox=dict(boxstyle="round,pad=0.35", facecolor=(1110.82), edgecolor=(0000.15))    )    plt.tight_layout()    plt.savefig(out_png, bbox_inches="tight", facecolor=fig.get_facecolor())def main():    seeds = generate_seeds()    trajs = [integrate_trajectory(x0, y0) for x0, y0 in seeds]    basic_png = os.path.join(OUTDIR, "trajectory_stream_basic.png")    advanced_png = os.path.join(OUTDIR, "trajectory_stream_advanced.png")    plot_basic(trajs, basic_png)    plot_advanced(trajs, advanced_png)if __name__ == "__main__":    main()

    特别声明:

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

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

    最新文章

    随机文章

    基本 文件 流程 错误 SQL 调试
    1. 请求信息 : 2026-07-04 09:35:39 HTTP/2.0 GET : https://f.mffb.com.cn/a/488032.html
    2. 运行时间 : 0.093373s [ 吞吐率:10.71req/s ] 内存消耗:4,603.27kb 文件加载:140
    3. 缓存信息 : 0 reads,0 writes
    4. 会话信息 : SESSION_ID=82e46ff3d653267c0003bb52cb560a1d
    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.000403s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
    2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000639s ]
    3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.001862s ]
    4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000402s ]
    5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000518s ]
    6. SELECT * FROM `set` [ RunTime:0.001736s ]
    7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000626s ]
    8. SELECT * FROM `article` WHERE `id` = 488032 LIMIT 1 [ RunTime:0.000766s ]
    9. UPDATE `article` SET `lasttime` = 1783128939 WHERE `id` = 488032 [ RunTime:0.007063s ]
    10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000616s ]
    11. SELECT * FROM `article` WHERE `id` < 488032 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000701s ]
    12. SELECT * FROM `article` WHERE `id` > 488032 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.004182s ]
    13. SELECT * FROM `article` WHERE `id` < 488032 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002282s ]
    14. SELECT * FROM `article` WHERE `id` < 488032 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000985s ]
    15. SELECT * FROM `article` WHERE `id` < 488032 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001894s ]
    0.094920s