当前位置:首页>python>Python数据可视化:交互篇 - Plotly

Python数据可视化:交互篇 - Plotly

  • 2026-03-26 09:14:02
Python数据可视化:交互篇 - Plotly

引言:为什么选择Plotly?

Plotly是一个强大的交互式数据可视化库,它可以让你创建出具有高度交互性的图表。与Matplotlib和Seaborn不同,Plotly生成的图表可以:

  • 交互式操作:缩放、平移、悬停查看详情
  • 动态更新:支持下拉选择、滑块等控件
  • Web友好:直接导出为HTML,可嵌入网页
  • 3D可视化:支持3D图表和地图可视化

本文将带你掌握Plotly的核心技能。


一、Plotly介绍

什么是Plotly

Plotly是一个交互式数据可视化库,支持创建交互式图表和仪表板。

特点

  • 交互式图表:可缩放、悬停查看详情
  • 3D图表:支持3D图表和地图可视化
  • 多格式导出:可导出为HTML、图片等格式
  • Web集成:适合创建Web应用中的可视化

二、环境搭建

1. 安装Plotly

# 使用pip安装
pip install plotly pandas numpy

# 或使用conda安装
conda install plotly pandas numpy

2. 验证安装

import plotly.express as px
import plotly.graph_objects as go
import pandas as pd
import numpy as np

print("Plotly版本:", px.__version__)
print("环境搭建成功!")

三、基础交互式图表

1. 交互式散点图

散点图可以悬停查看每个点的详细信息。

import plotly.express as px
import pandas as pd
import numpy as np

# 加载示例数据
tips = px.data.tips()

# 创建交互式散点图
fig = px.scatter(tips, 
                 x='total_bill'
                 y='tip'
                 color='sex'
                 size='size',
                 hover_data=['day''time'],
                 title='账单金额与小费的关系',
                 labels={'total_bill''账单金额 ($)''tip''小费 ($)'},
                 color_discrete_map={'Male''
#4ECDC4''Female''#FF6B6B'})

# 更新布局
fig.update_layout(
    title_font_size=16,
    xaxis_title_font_size=12,
    yaxis_title_font_size=12,
    legend_title_font_size=12,
    height=600,
    width=900
)

# 显示图表
fig.show()

2. 交互式柱状图

柱状图可以悬停查看具体数值。

fig = px.bar(tips, 
             x='day'
             y='total_bill'
             color='sex',
             barmode='group',
             title='每天的账单金额',
             labels={'total_bill''账单金额 ($)''day''星期'},
             color_discrete_map={'Male''#4ECDC4''Female''#FF6B6B'})

fig.update_layout(
    title_font_size=16,
    height=600,
    width=900
)

fig.show()

3. 交互式折线图

折线图适合展示时间序列数据。

# 创建时间序列数据
np.random.seed(42)
dates = pd.date_range('2024-01-01''2024-12-31', freq='D')
values1 = np.cumsum(np.random.randn(365)) + 100
values2 = np.cumsum(np.random.randn(365)) + 100

df_line = pd.DataFrame({
'日期': dates,
'产品A': values1,
'产品B': values2
})

# 转换为长格式
df_line_melt = df_line.melt('日期', var_name='产品', value_name='销售额')

fig = px.line(df_line_melt,
              x='日期',
              y='销售额',
              color='产品',
              title='产品销售趋势',
              labels={'销售额''销售额''日期''日期'},
              color_discrete_map={'产品A''#4ECDC4''产品B''#FF6B6B'})

fig.update_layout(
    title_font_size=16,
    height=600,
    width=1000,
    hovermode='x unified'
)

fig.show()

4. 交互式饼图

饼图可以悬停查看每个部分的占比。

fig = px.pie(tips,
             values='total_bill',
             names='day',
             title='每天的账单金额占比',
             color_discrete_sequence=px.colors.qualitative.Set2)

fig.update_layout(
    title_font_size=16,
    height=600,
    width=800
)

fig.update_traces(
    textposition='inside',
    textinfo='percent+label',
    hovertemplate='%{label}: $%{value:.2f}<br>占比: %{percent}'
)

fig.show()

5. 交互式直方图

直方图可以悬停查看每个区间的频率。

fig = px.histogram(tips,
                    x='total_bill',
                    color='sex',
                    nbins=20,
                    title='账单金额分布',
                    labels={'total_bill''账单金额 ($)'},
                    color_discrete_map={'Male''#4ECDC4''Female''#FF6B6B'},
                    marginal='box')  # 添加边际图

fig.update_layout(
    title_font_size=16,
    height=600,
    width=900,
    barmode='overlay'
)

fig.update_traces(opacity=0.7)

fig.show()

四、高级交互式图表

1. 3D散点图

Plotly的3D图表非常强大。

iris = px.data.iris()

fig = px.scatter_3d(iris,
                    x='sepal_length',
                    y='sepal_width',
                    z='petal_length',
                    color='species',
                    size='petal_width',
                    title='鸢尾花数据的3D可视化',
                    labels={'sepal_length''萼片长度'
'sepal_width''萼片宽度'
'petal_length''花瓣长度'},
                    color_discrete_map={'setosa''#FF6B6B'
'versicolor''#4ECDC4'
'virginica''#45B7D1'})

fig.update_layout(
    title_font_size=16,
    height=700,
    width=900,
    scene=dict(
        xaxis_title='萼片长度',
        yaxis_title='萼片宽度',
        zaxis_title='花瓣长度'
    )
)

fig.show()

2. 密度热力图

密度热力图可以展示两个变量的联合分布。

fig = px.density_heatmap(tips,
                         x='total_bill',
                         y='tip',
                         marginal_x='histogram',
                         marginal_y='histogram',
                         title='账单金额与小费的密度热力图',
                         labels={'total_bill''账单金额 ($)''tip''小费 ($)'},
                         color_continuous_scale='Viridis')

fig.update_layout(
    title_font_size=16,
    height=700,
    width=900
)

fig.show()

3. 平行坐标图

平行坐标图适合展示多变量数据。

fig = px.parallel_coordinates(iris,
                              color='species_id',
                              title='鸢尾花数据的平行坐标图',
                              color_continuous_scale=px.colors.diverging.Tealrose,
                              color_continuous_midpoint=2)

fig.update_layout(
    title_font_size=16,
    height=600,
    width=1000
)

fig.show()

4. 小提琴图

小提琴图可以展示数据分布。

fig = px.violin(tips,
                y='total_bill',
                x='day',
                color='sex',
                box=True,
                points='all',
                title='每天的账单金额分布',
                labels={'total_bill''账单金额 ($)''day''星期'},
                color_discrete_map={'Male''#4ECDC4''Female''#FF6B6B'})

fig.update_layout(
    title_font_size=16,
    height=600,
    width=900
)

fig.show()

5. 旭日图

旭日图适合展示层级数据。

# 创建层级数据
data = {
'类别': ['电子产品''电子产品''电子产品''配件''配件''配件'],
'产品': ['智能手机''笔记本电脑''平板电脑''耳机''充电器''保护壳'],
'销售额': [50000400003000015000100005000]
}

df_sunburst = pd.DataFrame(data)

fig = px.sunburst(df_sunburst,
                  path=['类别''产品'],
                  values='销售额',
                  title='产品销售构成',
                  color='类别',
                  color_discrete_map={'电子产品''#4ECDC4''配件''#FF6B6B'})

fig.update_layout(
    title_font_size=16,
    height=700,
    width=700
)

fig.show()

五、交互式控件

1. 下拉菜单

添加下拉菜单可以动态切换数据。

import plotly.graph_objects as go

# 创建数据
np.random.seed(42)
x = np.linspace(010100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)

fig = go.Figure()

# 添加三个轨迹
fig.add_trace(go.Scatter(x=x, y=y1, name='sin(x)', visible=True))
fig.add_trace(go.Scatter(x=x, y=y2, name='cos(x)', visible=False))
fig.add_trace(go.Scatter(x=x, y=y3, name='tan(x)', visible=False))

# 更新菜单
fig.update_layout(
    updatemenus=[
        dict(
            buttons=list([
                dict(
                    label='sin(x)',
                    method='update',
                    args=[{'visible': [TrueFalseFalse]},
                          {'title''正弦函数'}]),
                dict(
                    label='cos(x)',
                    method='update',
                    args=[{'visible': [FalseTrueFalse]},
                          {'title''余弦函数'}]),
                dict(
                    label='tan(x)',
                    method='update',
                    args=[{'visible': [FalseFalseTrue]},
                          {'title''正切函数'}])
            ]),
            direction='down',
            showactive=True,
        )
    ],
    title='正弦函数',
    height=600,
    width=900
)

fig.show()

2. 滑块

滑块可以动态调整参数。

# 创建数据
x = np.linspace(010100)

fig = go.Figure()

# 添加初始轨迹
fig.add_trace(go.Scatter(x=x, y=np.sin(x), name='sin(x)'))

# 创建滑块步骤
steps = []
for freq in np.arange(0.53.10.5):
    step = dict(
        method='update',
        args=[{'y': [np.sin(freq * x)]},
              {'title'f'正弦函数 (频率={freq})'}],
        label=f'{freq:.1f}'
    )
    steps.append(step)

# 添加滑块
fig.update_layout(
    sliders=[dict(
        active=0,
        currentvalue={"prefix""频率: "},
        pad={"t"50},
        steps=steps
    )],
    title='正弦函数 (频率=0.5)',
    height=600,
    width=900
)

fig.show()

六、实战案例:销售数据分析

1. 数据描述

我们有一份销售数据,包含以下字段:

  • date: 销售日期
  • product: 产品名称
  • category: 产品类别
  • quantity: 销售数量
  • price: 单价
  • revenue: 销售额

2. 可视化目标

  • 销售趋势分析
  • 产品销售排名
  • 价格与销售额的关系

3. 代码实现

import plotly.express as px
import plotly.graph_objects as go
import pandas as pd
import numpy as np

# 创建模拟数据
np.random.seed(42)
dates = pd.date_range('2024-01-01''2024-12-31', freq='D')
products = ['智能手机''笔记本电脑''平板电脑''耳机''充电器']
categories = ['电子产品''电子产品''电子产品''配件''配件']

data = {
'date': np.random.choice(dates, 1000),
'product': np.random.choice(products, 1000),
'category': np.random.choice(categories, 1000),
'quantity': np.random.randint(1101000),
'price': np.random.choice([29995999199929999], 1000)
}

df = pd.DataFrame(data)
df['revenue'] = df['quantity'] * df['price']
df['month'] = df['date'].dt.month

# 1. 销售趋势分析
daily_sales = df.groupby('date')['revenue'].sum().reset_index()

fig = px.line(daily_sales,
              x='date',
              y='revenue',
              title='2024年每日销售趋势',
              labels={'revenue''销售额''date''日期'})

fig.update_layout(
    title_font_size=16,
    height=500,
    width=1000,
    hovermode='x unified'
)

fig.update_traces(
    line_color='#45B7D1',
    line_width=2
)

fig.show()

# 2. 产品销售排名
top_products = df.groupby('product')['revenue'].sum().sort_values(ascending=False).reset_index()

fig = px.bar(top_products,
             x='product',
             y='revenue',
             title='销售额前10的产品',
             labels={'revenue''销售额''product''产品'},
             color='revenue',
             color_continuous_scale='Viridis')

fig.update_layout(
    title_font_size=16,
    height=500,
    width=900
)

fig.update_traces(
    texttemplate='%{y:,.0f}',
    textposition='outside'
)

fig.show()

# 3. 价格与销售额的关系
fig = px.scatter(df,
                 x='price',
                 y='revenue',
                 color='category',
                 size='quantity',
                 hover_data=['product'],
                 title='价格与销售额的关系',
                 labels={'price''价格''revenue''销售额''category''类别'},
                 color_discrete_map={'电子产品''#4ECDC4''配件''#FF6B6B'})

fig.update_layout(
    title_font_size=16,
    height=600,
    width=900
)

fig.show()

# 4. 月度销售情况
monthly_sales = df.groupby('month')['revenue'].sum().reset_index()
month_names = ['1月''2月''3月''4月''5月''6月'
'7月''8月''9月''10月''11月''12月']
monthly_sales['month_name'] = monthly_sales['month'].map(lambda x: month_names[x-1])

fig = px.bar(monthly_sales,
             x='month_name',
             y='revenue',
             title='2024年月度销售额',
             labels={'revenue''销售额''month_name''月份'},
             color='revenue',
             color_continuous_scale='Viridis')

fig.update_layout(
    title_font_size=16,
    height=500,
    width=900
)

fig.update_traces(
    texttemplate='%{y:,.0f}',
    textposition='outside'
)

fig.show()

# 5. 交互式仪表板(组合图表)
fig = go.Figure()

# 添加销售额趋势
fig.add_trace(go.Scatter(
    x=daily_sales['date'],
    y=daily_sales['revenue'],
    name='销售额',
    yaxis='y',
    line_color='#45B7D1'
))

# 添加移动平均线
daily_sales['MA7'] = daily_sales['revenue'].rolling(7).mean()
fig.add_trace(go.Scatter(
    x=daily_sales['date'],
    y=daily_sales['MA7'],
    name='7日移动平均',
    yaxis='y',
    line_color='#FF6B6B',
    line_dash='dash'
))

fig.update_layout(
    title='销售趋势与移动平均',
    title_font_size=16,
    height=500,
    width=1000,
    yaxis=dict(title='销售额'),
    hovermode='x unified'
)

fig.show()

七、图表导出与分享

1. 导出为HTML

# 创建一个图表
fig = px.scatter(tips, x='total_bill', y='tip', color='sex')

# 导出为HTML文件
fig.write_html('interactive_chart.html')
print("图表已导出为 interactive_chart.html")

2. 导出为图片

# 需要安装kaleido
# pip install kaleido

# 导出为PNG
fig.write_image('chart.png', width=1200, height=800, scale=2)
print("图表已导出为 chart.png")

# 导出为SVG
fig.write_image('chart.svg')
print("图表已导出为 chart.svg")

# 导出为PDF
fig.write_image('chart.pdf')
print("图表已导出为 chart.pdf")

八、最佳实践

1. 性能优化

  • 大数据集时使用采样
  • 避免在一个图表中显示过多数据点
  • 使用WebGL渲染大数据集

2. 交互设计

  • 确保悬停信息清晰有用
  • 合理使用颜色和大小编码
  • 提供清晰的图例和说明

3. 图表选择

场景
推荐图表
探索数据关系
scatter, scatter_3d
时间序列
line
分类对比
bar, violin
层级数据
sunburst, treemap
分布展示
histogram, density_heatmap

九、学习资源推荐

1. 官方资源

  • Plotly官网:https://plotly.com/python/
  • Plotly Express文档:https://plotly.com/python/plotly-express/
  • Plotly示例库:https://plotly.com/python/

2. 书籍

  • 《交互式数据可视化》(Plotly官方文档)
  • 《Python数据科学手册》(Jake VanderPlas)

十、总结

Plotly让数据可视化变得生动而有趣。通过本文的学习,你已经掌握了:

  • Plotly的基本概念和环境搭建
  • 基础交互式图表的创建
  • 高级交互式图表的使用
  • 交互式控件的添加
  • 实战案例应用
  • 图表导出与分享

Plotly的交互性能让你的数据故事更加生动,让读者能够主动探索数据。记住,好的交互式可视化应该既美观又实用,让用户能够真正从交互中获得洞见!

小贴士:Plotly图表默认显示在浏览器中,你可以通过右上角的工具栏进行缩放、平移、下载等操作。探索这些功能,让你的可视化体验更好!

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-27 11:41:46 HTTP/2.0 GET : https://f.mffb.com.cn/a/482703.html
  2. 运行时间 : 0.211947s [ 吞吐率:4.72req/s ] 内存消耗:4,809.93kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=a1e656d32b47d4358c7d04e9ff9f4824
  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.000904s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001480s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000629s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000627s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001275s ]
  6. SELECT * FROM `set` [ RunTime:0.002087s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001472s ]
  8. SELECT * FROM `article` WHERE `id` = 482703 LIMIT 1 [ RunTime:0.001058s ]
  9. UPDATE `article` SET `lasttime` = 1774582906 WHERE `id` = 482703 [ RunTime:0.011106s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000607s ]
  11. SELECT * FROM `article` WHERE `id` < 482703 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000984s ]
  12. SELECT * FROM `article` WHERE `id` > 482703 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000925s ]
  13. SELECT * FROM `article` WHERE `id` < 482703 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002076s ]
  14. SELECT * FROM `article` WHERE `id` < 482703 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.005576s ]
  15. SELECT * FROM `article` WHERE `id` < 482703 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.005720s ]
0.215647s