再见 Matplotlib!Plotly 让我在年初汇报封神
🎯 新年开工,别让你的图表拖后腿!
年初的时候,公司开会,我被点名要做一份数据可视化报告。于是,我打开VScode,用Python的Matplotlib,敲了半天代码,结果出来的图丑得让我怀疑人生。
老板看了我的图,皱着眉头问:"这个饼图是怎么回事?为什么颜色这么丑?"
我小心翼翼地回答:"这、这、这是默认配色......"
老板叹了口气:"默认就默认吧,为什么鼠标不能互动?能不能点一下显示详细数据?"
我:😶
于是,我痛定思痛,决定------新的一年,告别 Matplotlib,让 Plotly 赋能数据可视化!
🎨 为什么 Plotly 更适合职场数据可视化?
当然,不是说 Matplotlib 不好,它在学术研究和静态报告方面仍然是王者,但在日常工作、数据汇报、商业分析中,它的短板太明显了:
对比项 | Matplotlib | Plotly |
---|---|---|
交互性 | 静态图表,无法交互 | 可拖动、缩放、悬停显示数据 |
美观度 | 默认样式较朴素 | 预设样式更精美 |
动画 | 需要复杂的代码实现 | 原生支持动态效果 |
适用场景 | 研究论文、静态报告 | 商业分析、数据展示、趋势预测 |
💡 想快速上手 Plotly?来跟着花姐带你原地起飞🛫
🔧 安装 Plotly
要使用 Plotly,首先安装它:
bash
pip install plotly
安装完之后,你就可以开始写代码了!
💎 Plotly 入门:画出第一张图
我们用 Plotly 画一张简单的折线图,看看它和 Matplotlib 的区别。
Matplotlib 版本
python
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [10, 15, 7, 20, 25]
plt.plot(x, y, marker='o')
plt.title("简单折线图")
plt.show()
这个图的交互性基本为零,想让它更好看?还得调各种参数。
Plotly 版本
python
import plotly.express as px
data = {
"x": [1, 2, 3, 4, 5],
"y": [10, 15, 7, 20, 25]
}
fig = px.line(data, x="x", y="y", title="交互式折线图")
# 保存图表到指定目录
fig.write_html('plot.html')
Matplotlib 中文直接显示不出来,还得做特殊处理;Plotly你可以拖拽、缩放、鼠标悬停查看详细数据,这体验,直接封神!
🔍 进阶:常见图表类型
1. 柱状图(Bar Chart)
python
import plotly.express as px
data = {
"城市": ["北京", "上海", "广州", "深圳"],
"GDP": [35000, 32000, 27000, 29000]
}
fig = px.bar(data, x="城市", y="GDP", title="城市 GDP 对比", color="城市")
fig.write_html('plot.html')
2. 饼图(Pie Chart)
python
fig = px.pie(data, names="城市", values="GDP", title="GDP 分布")
fig.write_html('plot.html')
3. 散点图(Scatter Plot)
python
fig = px.scatter(data, x="城市", y="GDP", title="城市 GDP 散点图")
fig.write_html('plot.html')
以上代码可以直接运行,生成的图表不仅好看,还能交互,老板再也不会嫌弃你的工作汇报!
4. 热门的 KPI 仪表盘
新年 KPI 目标设定完成,必须做个仪表盘来展示进度!
python
import plotly.graph_objects as go
fig = go.Figure(go.Indicator(
mode="gauge+number",
value=85, # KPI 完成率
title={'text': "年度 KPI 完成率"},
gauge={'axis': {'range': [0, 100]}, 'bar': {'color': "green"}}
))
fig.write_html('plot.html')
5. 动态图表
有时候,老板更喜欢看数据的变化趋势,而不是冷冰冰的静态数字。
python
import plotly.express as px
import numpy as np
# 生成模拟数据
df = px.data.gapminder()
# 动态气泡图
fig = px.scatter(df, x="gdpPercap", y="lifeExp", size="pop", color="continent",
animation_frame="year", animation_group="country", log_x=True, size_max=55,
title='全球 GDP vs. 预期寿命 动态变化')
fig.write_html('plot.html')
📽 效果:
- 点击"播放"按钮,数据随时间动态变化
- 国家气泡大小随人口变化而变化
- 会议室里一片惊呼:"这也太酷了吧!"
🎉 终极技巧:结合 Dash 打造 Web 可视化
如果你想把 Plotly 的图表嵌入网页,还可以结合 Dash,打造一个真正的 Web 应用。
bash
pip install dash
然后写一个简单的 Dash 应用:
python
import dash
from dash import dcc, html
import plotly.express as px
app = dash.Dash(__name__)
data = px.data.gapminder()
fig1 = px.scatter(data, x="gdpPercap", y="lifeExp", size="pop", color="continent", hover_name="country", log_x=True, size_max=60)
fig2 = px.line(data, x="year", y="gdpPercap", color="continent", title="GDP 变化趋势")
fig3 = px.bar(data, x="continent", y="pop", title="各大洲人口分布", color="continent")
app.layout = html.Div([
html.Div([
dcc.Graph(figure=fig1, style={'width': '48%', 'display': 'inline-block'}),
dcc.Graph(figure=fig2, style={'width': '48%', 'display': 'inline-block'})
]),
html.Div([
dcc.Graph(figure=fig3, style={'width': '100%'})
])
])
if __name__ == '__main__':
app.run_server(debug=True)
运行这个代码,你就可以在浏览器里看到交互式数据可视化页面,是不是很酷?🔥
🏅 结论:选对工具,让数据分析更高效!
- Matplotlib 适合基础静态图,适合科研场景
- Plotly 适合交互式炫酷图表,适合年终汇报、商业展示
- Dash 让你用 Python 搭建可视化 Web 应用
所以,新的一年,别再让 Matplotlib 拖后腿,Plotly 让你在数据分析领域更上一层楼!🎉