1.Matplotlib
Matplotlib 是一个用于在 Python 中创建数据可视化的库,常用于绘制图表、图形。
它提供了一个类似 MATLAB 的接口,方便用户快速绘制各种静态、动态和交互式的图表。
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.arange(10) # X轴数据
y = np.random.random(10) # Y轴数据,生成10个随机数
# 创建图形
plt.figure(figsize=(10, 5))
# 绘制折线图
plt.plot(x, y, label='Random data')
# 添加标题和标签
plt.title('Simple Line Plot')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
# 显示图例
plt.legend()
# 显示图形
plt.show()
2.Seaborn
Seaborn 是一个基于 Matplotlib 的数据可视化库,它提供了更高级的接口,使得绘制更加吸引人且富有信息的统计图形变得更简单。
import seaborn as sns
import matplotlib.pyplot as plt
# 创建示例数据
data = {'Category': ['A', 'B', 'C', 'D'],
'Values': [10, 15, 7, 10]}
# 转换为 DataFrame
import pandas as pd
df = pd.DataFrame(data)
# 创建柱状图
sns.barplot(x='Category', y='Values', data=df,palette=sns.color_palette("hls", 4))
# 添加标题
plt.title('Bar Plot of Categories')
# 显示图形
plt.show()
3. Plotly Express
Plotly Express 是 Plotly 的一个高级封装库,专门用于创建交互式图表。
它提供了一个简单的语法,能够快速地生成复杂的图表,包括线图、散点图、柱状图、饼图等。
Plotly Express 的优点在于其强大的交互功能,如悬停提示、缩放和滑动条等,这使得它非常适合探索性数据分析和呈现动态数据。
import plotly.express as px
# 创建示例数据
data = {'Category': ['A', 'B', 'C', 'D'],
'Values': [10, 15, 7, 10]}
# 转换为 DataFrame
import pandas as pd
df = pd.DataFrame(data)
# 创建饼图
fig = px.pie(df, names='Category', values='Values', title='Distribution of Categories')
# 显示图形
fig.show()
4.Pygal
Pygal 是一个用于创建 SVG (Scalable Vector Graphics) 图表的 Python 库。
它设计轻巧,易于使用,特别适合 web 应用的动态图表。
Pygal 提供了各种图表类型,如条形图、线形图、饼图、雷达图和散点图等。
它的主要优点之一是可以直接在浏览器中查看动态可缩放的图形,这对于需要在 web 页面上直接嵌入图形的应用来说非常有用。
import pygal
# 创建散点图对象
scatter_chart = pygal.XY(stroke=False)
# 图表标题
scatter_chart.title = 'Sample Scatter Plot'
# 添加数据点
scatter_chart.add('A', [(1, 2), (4, 7), (5, 3)])
scatter_chart.add('B', [(2, 3), (3, 12), (6, 8)])
# 保存图表到文件,也可以使用 render_to_file('scatter_chart.svg') 方法
scatter_chart.render_to_file('scatter_chart.svg')
5.Altair
Altair 是一个声明式的统计可视化库。
它建立在强大的 Vega-Lite 可视化语法之上,使得创建复杂和美观的图表变得简单而直观。
Altair 的主要优点是其声明式语法:你只需描述图表的各个组成部分,如数据和编码,而无需担心底层实现细节。
这使得 Altair 非常适合于数据探索和快速可视化。
import altair as alt
from vega_datasets import data
# 加载鸢尾花数据集
iris = data.iris()
# 使用melt将数据从宽格式转换为长格式
iris_long = iris.melt(id_vars='species', var_name='Measurement_type', value_name='value')
# 创建密度图
density_plot = alt.Chart(iris_long).transform_density(
'value',
as_=['value', 'density'],
groupby=['Measurement_type']
).mark_area(opacity=0.5).encode(
alt.X('value:Q'),
alt.Y('density:Q'),
alt.Color('Measurement_type:N')
).properties(
title='Density Plot'
)
density_plot
6.Bokeh
Bokeh 是一个用于创建交互式和可视化图表的 Python 库,特别适合在浏览器中展示。
它能够处理大型数据集或实时数据集,支持快速绘制,并且可以轻松地嵌入到 HTML 页面中。
from bokeh.plotting import figure, show, output_file
from bokeh.models import ColumnDataSource
import pandas as pd
# 准备数据
data = pd.DataFrame({
'x': [1, 2, 3, 4, 5],
'y1': [2, 5, 8, 2, 7],
'y2': [3, 5, 7, 8, 6]
})
# 创建一个绘图
p = figure(width=600, height=400)
# 添加面积图,使用鲜艳的颜色
p.varea_stack(['y1', 'y2'], x='x', color=("blue", "orange"), source=data)
# 显示结果
output_file("area_chart.html")
show(p)