Python库的多样性使得它们可以在不同的应用场景中发挥作用,不同场景下同一个库可能拥有不同的功能,本系列未来会有不同的分类,可能会出现相同的库。数量很多,慢慢整理。文中的示例都是最基础的用法,有些就顺手写了,有些就丢给Ai,看个乐就行。
1. VisPy – 大规模数据可视化库
功能: VisPy 是一个高性能的可视化库,专为处理大规模数据集而设计。它利用 GPU 来加速绘图,支持多种图形和交互。
使用场景:
- 科学计算和大数据可视化。
- 实时数据可视化,如信号处理、图像处理。
- 需要高性能图形渲染的应用。
示例:
from vispy import app, scene # 创建一个简单的场景 canvas = scene.SceneCanvas(keys='interactive') view = canvas.central_widget.add_view() # 添加一个点云 scatter = scene.visuals.Markers() scatter.set_data(np.random.rand(10000, 3), edge_color=None, face_color=(1, 1, 1, .5), size=5) view.add(scatter) # 运行应用 canvas.show() app.run()
2. MayaVi – 科学数据的 3D 可视化
功能: MayaVi 是一个基于 VTK 的 3D 数据可视化工具,提供了丰富的 3D 绘图功能。
使用场景:
- 科学数据的 3D 展示,如气象数据、地质数据等。
- 工程中的三维模型展示和分析。
- 医学成像和可视化。
示例:
from mayavi import mlab # 创建一个简单的数据集 x, y, z = np.ogrid[-5:5:100j, -5:5:100j, -5:5:100j] scalars = x * x + y * y + z * z # 绘制等值面 mlab.contour3d(scalars, opacity=0.3) mlab.show()
3. NetworkX – 网络图分析和可视化
功能: NetworkX 是一个用于创建、操作和研究复杂网络的库,支持网络分析和可视化。
使用场景:
- 社会网络分析。
- 生物网络、互联网拓扑分析。
- 图论研究和算法实现。
示例:
import networkx as nx import matplotlib.pyplot as plt # 创建一个随机图 G = nx.erdos_renyi_graph(100, 0.15) # 绘制图形 nx.draw(G, with_labels=True) plt.show()
4. PyDeck – 地理数据可视化
功能: PyDeck 是 Uber 的 Deck.gl 的 Python 接口,用于创建交互式地理数据可视化。
使用场景:
- 地理信息系统(GIS)数据可视化。
- 城市规划、交通流量分析等。
- 实时数据在地图上的展示。
示例:
import pydeck as pdk
import pandas as pd
# 加载数据
df = pd.read_csv('path_to_your_data.csv')
# 定义图层
layer = pdk.Layer(
'ScatterplotLayer',
data=df,
get_position='[longitude, latitude]',
get_radius=100,
get_fill_color='[200, 30, 0, 140]',
pickable=True,
)
# 设置视图
view_state = pdk.ViewState(
latitude=df['latitude'].mean(),
longitude=df['longitude'].mean(),
zoom=10,
pitch=50,
)
# 渲染
r = pdk.Deck(layers=[layer], initial_view_state=view_state)
r.show()
5. Dash – 数据应用和交互式仪表盘框架
功能: Dash 是一个基于 Flask、React 和 Plotly.js 的框架,用于创建交互式 Web 应用和仪表盘。
使用场景:
- 创建数据驱动的 Web 应用。
- 业务智能和数据分析的仪表盘。
- 科学研究和数据展示。
示例:
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import plotly.express as px
# 初始化应用
app = dash.Dash(__name__)
# 定义布局
app.layout = html.Div([
dcc.Graph(id='graph'),
dcc.Slider(
id='year-slider',
min=df['year'].min(),
max=df['year'].max(),
value=df['year'].min(),
marks={str(year): str(year) for year in df['year'].unique()}
)
])
# 回调函数
@app.callback(
Output('graph', 'figure'),
[Input('year-slider', 'value')])
def update_figure(selected_year):
filtered_df = df[df.year == selected_year]
fig = px.scatter(filtered_df, x="gdpPercap", y="lifeExp", size="pop", color="continent", hover_name="country", log_x=True, size_max=55)
fig.update_layout(transition_duration=500)
return fig
if __name__ == '__main__':
app.run_server(debug=True)
6. Streamlit – 快速创建数据应用的框架
功能: Streamlit 是一个开源的 Python 库,允许开发者通过简单的 Python 脚本快速构建交互式 Web 应用。
使用场景:
- 数据科学家快速展示数据和模型。
- 快速原型开发和数据探索。
- 内部工具和小型 Web 应用开发。
示例:
import streamlit as st
import pandas as pd
import numpy as np
# 标题
st.title('Streamlit 示例')
# 加载数据
df = pd.DataFrame({
'col1': np.random.randn(20),
'col2': np.random.randn(20),
'col3': np.random.choice(['A', 'B', 'C'], 20)
})
# 展示数据
st.write(df)
# 绘图
st.line_chart(df[['col1', 'col2']])
# 交互式元素
selected = st.selectbox('选择列', df.columns)
st.write('您选择了:', selected)
7. ggplot – ggplot2 风格的可视化库
功能: ggplot 是一个 Python 库,旨在提供 R 语言 ggplot2 风格的绘图接口。
使用场景:
- 统计图形绘制和数据探索。
- 学术研究和论文中的图表展示。
- 数据分析和报告。
示例:
from ggplot import *
import pandas as pd
# 加载数据
df = pd.DataFrame({
'x': np.random.randn(100),
'y': np.random.randn(100),
'category': np.random.choice(['A', 'B', 'C'], 100)
})
# 绘制散点图
p = ggplot(aes(x='x', y='y', color='category'), data=df) + \
geom_point() + \
ggtitle('ggplot 示例') + \
xlab('X 轴') + \
ylab('Y 轴')
print(p)
8. Pydy – 动力学系统的 Python 图形界面
功能: Pydy 是一个用于动力学系统模拟和分析的 Python 库,支持图形界面。
使用场景:
- 物理和工程中的动力学模拟。
- 机器人学、控制系统的设计和分析。
- 教育和教学中的动力学系统展示。
示例:
from pydy.viz import Scene, Cylinder
from pydy.viz.shapes import Cylinder
from pydy.viz.visualization_frame import VisualizationFrame
# 创建一个场景
scene = Scene()
# 添加一个圆柱体
cylinder = Cylinder(radius=0.5, length=2.0, color='red')
frame = VisualizationFrame('cylinder', reference_frame=None, point=None, geometry=cylinder)
scene.add(frame)
# 显示场景
scene.display()
9. mplfinance – 用于金融图表的 Matplotlib 扩展
功能: mplfinance 是 Matplotlib 的一个扩展库,专门用于金融图表的绘制。
使用场景:
- 金融数据分析和交易策略的可视化。
- 股票市场、外汇市场等金融领域的图表展示。
- 经济学研究中的数据展示。
示例:
import mplfinance as mpf
import pandas as pd
# 加载数据
df = pd.read_csv('stock_data.csv', parse_dates=True, index_col='Date')
# 绘制K线图
mpf.plot(df, type='candle', volume=True, show_nontrading=True)
10. PyQtGraph – 交互式图形和数据可视化
功能: PyQtGraph 是一个基于 PyQt 的图形库,提供高性能的 2D 和 3D 图形,支持实时数据可视化和交互。
使用场景:
- 科学数据的实时监控和可视化。
- 信号处理和图像处理中的交互式可视化。
- 数据分析中的动态图表展示。
示例:
from pyqtgraph.Qt import QtGui, QtCore import pyqtgraph as pg import numpy as np # 创建一个 Qt 应用 app = QtGui.QApplication([]) # 创建一个绘图窗口 win = pg.GraphicsWindow(title="PyQtGraph 示例") win.resize(800,600) # 添加一个绘图窗口 p1 = win.addPlot(title="动态数据") # 创建一个曲线 curve = p1.plot(pen='y') # 模拟数据 data = np.random.normal(size=(100,1000)) # 函数用于更新数据 def update(): global curve, data curve.setData(data[:,np.random.randint(1000)]) # 设置定时器 timer = QtCore.QTimer() timer.timeout.connect(update) timer.start(50) # 启动应用 if __name__ == '__main__': import sys if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'): QtGui.QApplication.instance().exec_()
