当前位置:首页>python>一天一个科研小技巧——Python复刻《Nature》柱状图

一天一个科研小技巧——Python复刻《Nature》柱状图

  • 2026-06-28 12:39:44
一天一个科研小技巧——Python复刻《Nature》柱状图
📊 柱状图是科研论文中最常见的统计图形之一,但很多时候我们画的柱状图要么千篇一律,要么杂乱无章。顶刊里的柱状图却总能把多组对比、多维度信息安排得明明白白,既清晰又有设计感。✨

今天就用一段 Python 代码,复刻一张Nature的多子图柱状图——包含两组对比实验多个物种,每个柱子又细分为UniqueBoth两类,同时左右两个大子图(a 和 b)分别对应不同的基因集。最终效果极具“顶刊味”,让你的数据展示瞬间提升档次!🚀

论文名称:Whole-genome duplication shaped cell-type evolution in the vertebrate brain


🎯 目标图预览

我们要复刻的是一张2×2 布局的柱状图:

左列(图 h):比较 AST vs Epen,包含 4 个物种,上下分别显示 WGD 和 SSD 的结果。

右列(图 i):比较 AST vs Oligo,包含 3 个物种,同样分 WGD 和 SSD。

每个柱子的颜色编码:Unique:浅粉紫(#E1B6CE),深色边框Both:浅蓝色(#A9C4E2),深色边框

这种设计能同时展示数量级差异(Unique 远大于 Both)和物种间趋势,信息密度极高。


🧱 第一步:模拟数据

为便于演示,我们用 numpy 生成与目标趋势一致的数据(实际使用时替换为自己的真实数据即可)。

import numpy as npnp.random.seed(42h_wgd_unique = np.array([680370350430])h_wgd_both   = np.random.randint(1575, size=4h_ssd_unique = np.array([580310230380])h_ssd_both   = np.random.randint(1565, size=4)i_wgd_unique = np.array([640400410])i_wgd_both   = np.array([1053028])   i_ssd_unique = np.array([520330210])i_ssd_both   = np.random.randint(1565, size=3)species_h = ["Human", "Mouse", "Lizard", "Lamprey"]species_i = ["Human", "Mouse", "Lizard"]

🎨 第二步:全局样式与配色

顶刊图形通常采用无衬线字体简洁坐标轴(去掉上、右 spine)和柔和的配色方案。我们一次性设置好:

import matplotlib.pyplot as pltplt.rcParams["font.family"] = "sans-serif"plt.rcParams["axes.unicode_minus"] = False# 定义颜色 (浅色填充 + 深色边框)color_unique = "#E1B6CE"edge_unique  = "#B97A9E"color_both   = "#A9C4E2"edge_both    = "#759CC4"bar_width = 0.35   # 每根柱子的宽度

📐 第三步:核心绘图函数

为了避免重复代码,我们把绘制单组柱状图的逻辑封装成函数,它接受坐标轴、两个数组(Unique 和 Both)、物种名称,以及是否显示 x 轴标签。

def draw_sub_plot(ax, unique_data, both_data, species, show_x=False):    x = np.arange(len(species))    # 绘制柱子:left 偏移量 -bar_width/1.5,right 偏移量 +bar_width/1.5    rects1 = ax.bar(x - bar_width/1.5, unique_data, bar_width,                    color=color_unique, edgecolor=edge_unique, linewidth=2)    rects2 = ax.bar(x + bar_width/1.5, both_data, bar_width,                    color=color_both, edgecolor=edge_both, linewidth=2)    # 隐藏上、右 spine,加粗左、下 spine    ax.spines["top"].set_visible(False)    ax.spines["right"].set_visible(False)    ax.spines["left"].set_linewidth(0.8)    ax.spines["bottom"].set_linewidth(0.8)    ax.set_ylim(-20720    if show_x:        ax.set_xticks(x)        ax.set_xticklabels(species, fontsize=11)    else:        ax.set_xticks([]) 

🗺️ 第四步:使用 GridSpec 精细布局

我们需要两列(左、右),每列上下两个子图(WGD 和 SSD)。用 GridSpec 可以精准控制子图间距,尤其是左右两列之间的间距(通过 wspace 参数)。

fig = plt.figure(figsize=(156)) # 主 GridSpec:2 行 2 列,宽度比例 4:3,左右间距 wspace=0.6gs = fig.add_gridspec(22, width_ratios=[43], wspace=0.6, hspace=0.1)

💡 小技巧:若觉得左右图靠得太近,加大 wspace 即可(如 0.6→0.8)。若整体被压缩,可同步增大 figsize 宽度。


🖼️ 第五步:绘制左列(图 a)

我们为左列(索引 0)创建一个2 行 1 列的子 GridSpec,并添加两个子图。

 # 左列的子网格gs_h = gs[:, 0].subgridspec(2, 1, hspace=0.1)ax_h_top = fig.add_subplot(gs_h[0, 0])ax_h_bottom = fig.add_subplot(gs_h[1, 0], sharex=ax_h_top)# 顶部 (WGD)draw_sub_plot(ax_h_top, h_wgd_unique, h_wgd_both, species_h, show_x=False)ax_h_top.text(1.03, 0.5, "WGD", transform=ax_h_top.transAxes,              rotation=-90, va="center", fontsize=12)# 底部 (SSD)draw_sub_plot(ax_h_bottom, h_ssd_unique, h_ssd_both, species_h, show_x=True)ax_h_bottom.text(1.03, 0.5, "SSD", transform=ax_h_bottom.transAxes,                 rotation=-90, va="center", fontsize=12)# 左列图例 (放在顶部子图的上方)ax_h_top.legend(    [plt.Rectangle((0,0),1,1, facecolor=color_unique, edgecolor=edge_unique, lw=2),     plt.Rectangle((0,0),1,1, facecolor=color_both, edgecolor=edge_both, lw=2)],    ["Unique""Both"],    title="AST vs Epen",    ncol=2,    bbox_to_anchor=(0.85, 1.15),    frameon=False,    title_fontsize=11,    fontsize=11)# 公共 Y 轴标签(左列)fig.text(0.07, 0.5, "Number of marker gene orthogroups",         va="center", rotation="vertical", fontsize=12)# 子图编号 afig.text(0.05, 0.92, "a", fontsize=18, fontweight="bold", va="top", ha="left")

🖼️ 第六步:绘制右列(图 b)

同理绘制右列,注意物种列表只有 3 个。

gs_i = gs[:, 1].subgridspec(2, 1, hspace=0.1)ax_i_top = fig.add_subplot(gs_i[0, 0])ax_i_bottom = fig.add_subplot(gs_i[1, 0], sharex=ax_i_top)# 顶部 (WGD)draw_sub_plot(ax_i_top, i_wgd_unique, i_wgd_both, species_i, show_x=False)ax_i_top.text(1.04, 0.5, "WGD", transform=ax_i_top.transAxes,              rotation=-90, va="center", fontsize=12)# 底部 (SSD)draw_sub_plot(ax_i_bottom, i_ssd_unique, i_ssd_both, species_i, show_x=True)ax_i_bottom.text(1.04, 0.5, "SSD", transform=ax_i_bottom.transAxes,                 rotation=-90, va="center", fontsize=12)# 右列图例ax_i_top.legend(    [plt.Rectangle((0,0),1,1, facecolor=color_unique, edgecolor=edge_unique, lw=2),     plt.Rectangle((0,0),1,1, facecolor=color_both, edgecolor=edge_both, lw=2)],    ["Unique""Both"],    title="AST vs Oligo",    ncol=2,    bbox_to_anchor=(0.85, 1.15),    frameon=False,    title_fontsize=11,    fontsize=11)# 公共 Y 轴标签(右列)fig.text(0.53, 0.5, "Number of marker gene orthogroups",         va="center", rotation="vertical", fontsize=12)# 子图编号 bfig.text(0.51, 0.92, "b", fontsize=18, fontweight="bold", va="top", ha="left")plt.tight_layout() plt.show()

✨ 最终效果


📦 完整代码一键运行

把以上所有片段按顺序拼接,即可直接运行。你也可以替换数据为自己的 Excel/CSV 文件,只需调整数组内容即可。

import matplotlib.pyplot as pltimport numpy as np# 设置随机种子np.random.seed(42)# ==========================================# 1. 模拟生成与原图趋势相近的数据# ==========================================# 格式: [Human, Mouse, Lizard, Lamprey]h_wgd_unique = np.array([680, 370, 350, 430])h_wgd_both = np.random.randint(15, 75, size=4)h_ssd_unique = np.array([580, 310, 230, 380])h_ssd_both = np.random.randint(15, 65, size=4)i_wgd_unique = np.array([640, 400, 410])i_wgd_both = np.array([105, 30, 28])  i_ssd_unique = np.array([520, 330, 210])i_ssd_both = np.random.randint(15, 65, size=3)species_h = ["Human""Mouse""Lizard""Lamprey"]species_i = ["Human""Mouse""Lizard"]# ==========================================# 2. 画图设置# ==========================================# 设置全局字体为无衬线,更接近 Nature/Science 风格plt.rcParams["font.family"] = "sans-serif"plt.rcParams["axes.unicode_minus"] = False# 创建画布,包含左右两个大区域 (h 和 i)fig = plt.figure(figsize=(14, 6))# 使用 Subplots 布局:左边 2x4 (图h),右边 2x3 (图i)gs = fig.add_gridspec(2, 2, width_ratios=[4, 3], wspace=0.6, hspace=0.1)# 配色方案 (原图的浅粉紫和浅蓝,带有深色边框)color_unique = "#E1B6CE"edge_unique = "#B97A9E"color_both = "#A9C4E2"edge_both = "#759CC4"bar_width = 0.35# 绘图核心函数def draw_sub_plot(ax, unique_data, both_data, species, show_x=False):    x = np.arange(len(species))    # 画柱状图    rects1 = ax.bar(        x - bar_width / 1.5,        unique_data,        bar_width,        color=color_unique,        edgecolor=edge_unique,        linewidth=2,    )    rects2 = ax.bar(        x + bar_width / 1.5,        both_data,        bar_width,        color=color_both,        edgecolor=edge_both,        linewidth=2,    )    # 样式微调    ax.spines["top"].set_visible(False)    ax.spines["right"].set_visible(False)    ax.spines["left"].set_linewidth(0.8)    ax.spines["bottom"].set_linewidth(0.8)    ax.set_ylim(-20, 720)    if show_x:        ax.set_xticks(x)        ax.set_xticklabels(species, fontsize=11)    else:        ax.set_xticks([])# ==========================================# 3. 图 a (左侧)# ==========================================gs_h = gs[:, 0].subgridspec(2, 1, hspace=0.1)ax_h_top = fig.add_subplot(gs_h[0, 0])ax_h_bottom = fig.add_subplot(gs_h[1, 0], sharex=ax_h_top)# 顶部 WGDdraw_sub_plot(ax_h_top, h_wgd_unique, h_wgd_both, species_h, show_x=False)ax_h_top.text(    1.03,    0.5,    "WGD",    transform=ax_h_top.transAxes,    rotation=-90,    va="center",    fontsize=12,)# 顶部的图例ax_h_top.legend(    [        plt.Rectangle((0, 0), 1, 1, facecolor=color_unique, edgecolor=edge_unique, lw=2),        plt.Rectangle((0, 0), 1, 1, facecolor=color_both, edgecolor=edge_both, lw=2),    ],    ["Unique""Both"],    title="AST vs Epen",    ncol=2,    bbox_to_anchor=(0.85, 1.15),    frameon=False,    title_fontsize=11,    fontsize=11,)# 底部 SSDdraw_sub_plot(ax_h_bottom, h_ssd_unique, h_ssd_both, species_h, show_x=True)ax_h_bottom.text(    1.03,    0.5,    "SSD",    transform=ax_h_bottom.transAxes,    rotation=-90,    va="center",    fontsize=12,)# 公共 Y 轴标签 (图a)fig.text(    0.07,    0.5,    "Number of marker gene orthogroups",    va="center",    rotation="vertical",    fontsize=12,)fig.text(    0.05, 0.92, "a", fontsize=18, fontweight="bold", va="top", ha="left")# ==========================================# 4.图 b (右侧)# ==========================================gs_i = gs[:, 1].subgridspec(2, 1, hspace=0.1)ax_i_top = fig.add_subplot(gs_i[0, 0])ax_i_bottom = fig.add_subplot(gs_i[1, 0], sharex=ax_i_top)# 顶部 WGDdraw_sub_plot(ax_i_top, i_wgd_unique, i_wgd_both, species_i, show_x=False)ax_i_top.text(    1.04,    0.5,    "WGD",    transform=ax_i_top.transAxes,    rotation=-90,    va="center",    fontsize=12,)# 顶部的图例ax_i_top.legend(    [        plt.Rectangle((0, 0), 1, 1, facecolor=color_unique, edgecolor=edge_unique, lw=2),        plt.Rectangle((0, 0), 1, 1, facecolor=color_both, edgecolor=edge_both, lw=2),    ],    ["Unique""Both"],    title="AST vs Oligo",    ncol=2,    bbox_to_anchor=(0.85, 1.15),    frameon=False,    title_fontsize=11,    fontsize=11,)# 底部 SSDdraw_sub_plot(ax_i_bottom, i_ssd_unique, i_ssd_both, species_i, show_x=True)ax_i_bottom.text(    1.04,    0.5,    "SSD",    transform=ax_i_bottom.transAxes,    rotation=-90,    va="center",    fontsize=12,)# 公共 Y 轴标签 (图b)fig.text(    0.53,    0.5,    "Number of marker gene orthogroups",    va="center",    rotation="vertical",    fontsize=12,)fig.text(    0.51, 0.92, "b", fontsize=18, fontweight="bold", va="top", ha="left")# 展示图像plt.show()

💬 思考:如果需要添加显著性标记(星号或线段),可以在 draw_sub_plot 内额外用 ax.plot() 和 ax.text() 添加,原理与云雨图类似。


🔮 写在最后

柱状图虽基础,但细节决定格局。通过精细控制子图间距、颜色、边框和图例位置,就能让数据开口说话,让审稿人眼前一亮。👀

如果你觉得有用,点个「在看」或转发给实验室的小伙伴,一起卷出顶刊范儿!我们下一个小技巧见~ 🚀

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-02 23:27:42 HTTP/2.0 GET : https://f.mffb.com.cn/a/501541.html
  2. 运行时间 : 0.199947s [ 吞吐率:5.00req/s ] 内存消耗:4,682.13kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=a6fbf6e44144cb62b02ca1f495b83dfe
  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.000908s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000854s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000370s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000301s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000485s ]
  6. SELECT * FROM `set` [ RunTime:0.000213s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000654s ]
  8. SELECT * FROM `article` WHERE `id` = 501541 LIMIT 1 [ RunTime:0.000505s ]
  9. UPDATE `article` SET `lasttime` = 1783006062 WHERE `id` = 501541 [ RunTime:0.022853s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.004141s ]
  11. SELECT * FROM `article` WHERE `id` < 501541 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000525s ]
  12. SELECT * FROM `article` WHERE `id` > 501541 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000673s ]
  13. SELECT * FROM `article` WHERE `id` < 501541 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002659s ]
  14. SELECT * FROM `article` WHERE `id` < 501541 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.014690s ]
  15. SELECT * FROM `article` WHERE `id` < 501541 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.005609s ]
0.201615s