再见 Matplotlib!Plotly 让我在年初汇报封神

再见 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 让你在数据分析领域更上一层楼!🎉

相关推荐
天若有情67318 分钟前
【python】Python爬虫入门教程:使用requests库
开发语言·爬虫·python·网络爬虫·request
IT北辰1 小时前
用Python+MySQL实战解锁企业财务数据分析
python·mysql·数据分析
Lucky高1 小时前
selenium(WEB自动化工具)
python
秃然想通1 小时前
掌握Python三大语句:顺序、条件与循环
开发语言·python·numpy
努力的小雨1 小时前
还在为调试提示词头疼?一个案例教你轻松上手!
后端
魔都吴所谓2 小时前
【go】语言的匿名变量如何定义与使用
开发语言·后端·golang
骇客野人2 小时前
使用python写一套完整的智能体小程序
开发语言·python
陈佬昔没带相机2 小时前
围观前后端对接的 TypeScript 最佳实践,我们缺什么?
前端·后端·api
山楂树の2 小时前
模型优化——在MacOS 上使用 Python 脚本批量大幅度精简 GLB 模型(通过 Blender 处理)
python·macos·3d·图形渲染·blender
云霄IT3 小时前
python之使用ffmpeg下载直播推流视频rtmp、m3u8协议实时获取时间进度
python·ffmpeg·音视频