import plotly.express as px
import plotly.graph_objects as go
import pandas as pd
# ========== 模块1:区域市场热力图谱 ==========
# 模拟数据
region_data = pd.DataFrame({
'省份': ['广东','江苏','浙江','上海','福建','其他'],
'门店密度': [95,88,92,85,76,40],
'物流节点数': [28,24,26,20,18,5]
})
# 热力地图
fig1 = px.choropleth(
region_data,
locations='省份',
locationmode='country names',
color='门店密度',
color_continuous_scale='YlOrRd',
scope='asia'
)
# 溢价能力环形图
fig2 = go.Figure(data=[go.Pie(
labels=['网红空间','联名营销','数字系统','季节限定'],
values=[35,28,22,15],
hole=0.5,
marker_colors=['#FFB6C1','#FFD700','#87CEEB','#FFA07A']
)])
fig2.update_layout(showlegend=False)
# ========== 模块2:城市分级对比 ==========
# 柱状雷达组合图
city_levels = ['超一线','新一线','三四线']
metrics = ['消费频次','价格敏感度','新品接受度','夜间消费率','停留时长']
fig3 = go.Figure()
# 柱状图
fig3.add_trace(go.Bar(
x=city_levels,
y=[58,73,81],
name='核心指标',
marker_color='#FFA07A'
))
# 雷达图
fig3.add_trace(go.Scatterpolar(
r=[4,3,5,4,2],
theta=metrics,
fill='toself',
name='超一线',
line_color='#87CEEB'
))
# ========== 模块3:品牌竞争沙盘 ==========
brands = pd.DataFrame({
'品牌': ['蜜雪冰城','喜茶','奈雪','古茗'],
'均价': [8,25,28,15],
'门店数': [20000,800,1000,6000],
'市场份额': [35,12,8,18]
})
# 气泡矩阵
fig4 = px.scatter(
brands,
x='均价',
y='门店数',
size='市场份额',
color='品牌',
color_discrete_sequence=['#FF6347','#FFD700','#32CD32','#6A5ACD'],
log_y=True,
text='品牌'
)
# ========== 可视化组合 ==========
from plotly.subplots import make_subplots
final_fig = make_subplots(
rows=3, cols=1,
specs=[[{"type": "choropleth"}],
[{"type": "xy", "secondary_y": True}],
[{"type": "scatter"}]],
subplot_titles=("区域市场热力图谱", "城市分级对比矩阵", "品牌竞争沙盘")
)
# 添加各模块图表
final_fig.add_trace(fig1.data[0], row=1, col=1)
final_fig.add_trace(fig3.data[0], row=2, col=1)
final_fig.add_trace(fig3.data[1], row=2, col=1)
final_fig.add_trace(fig4.data[0], row=3, col=1)
# 样式优化
final_fig.update_layout(
template='g
最新发布