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

相关推荐
VidDown18 分钟前
24fps 转 25fps 不只是改个数字:帧率转换、PAL/NTSC 与音频补偿
python·网络协议·音视频·视频编解码·视频
余槐i1 小时前
PostgreSQL 函数索引报错 must be immutable:3种绕法与代价
数据库·后端·sql·postgresql·性能优化
需要8261 小时前
Spring Bean 生命周期:从实例化到销毁的完整钩子
java·后端·spring
死磕音视频2 小时前
让小模型做选择题:限定候选项并读取 logits 概率的入门实践(附 Python 代码)
开发语言·python·大模型·文本分类·transformers
凤山老林3 小时前
Spring Boot 接入国密 SM2/SM3/SM4 的一些实践记录
spring boot·后端·python
伯恩bourne4 小时前
Spring Boot Bean 注册的两种方式:@Component 家族 vs @Configuration + @Bean
java·spring boot·后端
张彦峰ZYF4 小时前
停顿短不等于延迟低:G1、ZGC 与低延迟服务的目标分野、代价账本与选型标定
后端·回收暂停、应用停止总时长·到达安全点、分配停滞·屏障吃吞吐、并发线程吃核心·并发窗口吃堆余量·分区式靠挑回收集兑现目标·染色指针式不支持压缩引用
pride.li4 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉
databook4 小时前
用 Pydantic AI 从零搭建一个能干活的 AI Agent
人工智能·python
康小旺5 小时前
把 markitdown 做成 Windows 桌面版:拖进文档就出 Markdown,附 233MB→64MB 打包裁剪全过程
python