公众号:尤而小屋 编辑:Peter 作者:Peter
大家好,我是Peter~
今天给大家介绍6个Python可视化库:matplotlib、seaborn、plotly、Bokeh、altair、pygal
Matplotlib 是一个用于创建静态、交互式和动画可视化的Python库。它提供了一个类似于MATLAB的绘图框架,使得用户能够轻松地创建高质量的图表和图形。Matplotlib 广泛用于数据可视化,特别是在科学计算和工程领域。
以下是Matplotlib的一些主要特点:
import matplotlib.pyplot as plt
%matplotlib inline
# 设置支持中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 设置图像标题字体
plt.rcParams['axes.unicode_minus'] = False
# 数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
# 创建一个新的图形
plt.figure(figsize=(9,6))
# 绘制折线图
plt.plot(x, y, marker='o', linestyle='-', color='r', label='Data Line')
# 添加标题和标签
plt.title('Simple Line Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
# 显示网格、图例、图形
plt.grid(True)
plt.legend()
plt.show()
Seaborn 是一个基于 Python 的数据可视化库,它建立在 matplotlib 库之上,提供了一个高级接口来绘制各种有吸引力和信息丰富的统计图形。Seaborn 旨在使绘图更加容易,并且能够自动处理复杂的可视化任务,比如分类数据的分布、多变量关系以及热图等。
Seaborn 的一些主要特点包括:
Seaborn 是数据科学和统计分析中常用的工具,特别适合于探索性数据分析(EDA)阶段,帮助研究人员和分析师快速理解数据集的特点和结构。
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# 生成示例数据
data = {'Category': ['A']*50 + ['B']*50 + ['C']*50,
'Value': np.concatenate([np.random.normal(loc=0, scale=1, size=50),
np.random.normal(loc=2, scale=1.5, size=50),
np.random.normal(loc=-1, scale=0.5, size=50)])
}
df = pd.DataFrame(data)
# 创建小提琴图
plt.figure(figsize=(10, 6))
sns.violinplot(x='Category', y='Value', data=df, inner='quartile')
# 添加标题和标签
plt.title('Violin Plot Example')
plt.xlabel('Category')
plt.ylabel('Value')
# 显示图表
plt.show()
Plotly 是一个用于数据可视化的库,它支持 Python、R、Julia 和 JavaScript 等多种编程语言。Plotly 特别擅长创建交互式的图表和仪表板,这些图表可以在网页上显示,并且用户可以与之交互,比如缩放、平移、悬停显示数据信息等。
Plotly 的一些主要特点包括:
Plotly 是数据科学家、工程师和分析师在进行数据探索和呈现时的有力工具,它的交互性和美观的图表设计使其成为展示复杂数据和分析结果的理想选择。
import plotly.express as px
# 使用内置iris数据集
df = px.data.iris()
fig = px.scatter(
df,
x='sepal_width', # 指定x-y轴、颜色、散点大小、标题
y='sepal_length',
color='species',
size="sepal_length"
)
size = 20
# 设置x-y轴刻度、字体和图形整体信息
fig.update_layout(
title= {"text":"Iris Dataset Scatter Plot",
"font":dict(size=size,family="Arial",color="black",weight="bold")},
xaxis=dict(
title='Month.',
titlefont=dict(size=size,family="Arial",color="black",weight="bold"),
tickfont=dict(size=size)
),
yaxis=dict(
title='Capacity Retention.',
titlefont=dict(size=size,family="Arial",color="black",weight="bold"),
tickfont=dict(size=size)
),
width=950,
height=550,
title_x=0.45,
title_y=0.95,
autosize=False,
legend=dict(font=dict(size=size)) # 图例大小设置
#plot_bgcolor='rgba(0, 100, 100, 0.5)' # 设置背景色为半透明的红色
)
fig.show()
Bokeh 是一个用于创建交互式可视化的 Python 库,特别适用于现代 Web 浏览器。以下是 Bokeh 的一些核心特性:
Bokeh 的主要优势在于其对浏览器的原生支持,通过 Bokeh Server,可以轻松地实现实时数据的动态可视化。Bokeh 允许用户创建各种类型的图表,包括线图、散点图、柱状图、热图等,而且这些图表都可以在 Web 浏览器中交互式地操作。
from bokeh.io import output_notebook, show
from bokeh.plotting import figure
from bokeh.models import ColumnDataSource
import numpy as np
# 启用Bokeh输出到Jupyter Notebook
output_notebook()
# 生成一些示例数据
categories = ['A', 'B', 'C', 'D', 'E']
values = [10, 20, 30, 40, 50]
source = ColumnDataSource(data=dict(categories=categories, values=values))
# 创建一个Bokeh绘图对象
p = figure(x_range=categories, title="Bar Chart Example", width=800, height=400)
# 添加柱状图
p.vbar(x='categories', top='values', width=0.9, source=source, legend_label="Values", line_color='white')
# 设置图表属性
p.xgrid.grid_line_color = None
p.y_range.start = 0
p.legend.orientation = "horizontal"
p.legend.location = "top_center"
# 显示图表
show(p)
Altair 是一个基于 Python 的数据可视化库,用于创建交互式和声明式的数据可视化。它构建在 Vega-Lite 之上,Vega-Lite 是一种用于描述图表的高级语法,提供了一种直观的方式来定义数据可视化的外观和行为。以下是 Altair 的一些关键特点:
Altair 的这些特点使其成为一个强大而易于使用的数据可视化库,能够帮助用户更好地理解数据、发现见解,并有效地传达发现。
import altair as alt
from vega_datasets import data
source = data.cars()
chart = alt.Chart(source).mark_point().encode(
x='Horsepower',
y='Miles_per_Gallon',
color='Origin'
).properties(
width=800,
height=400,
title='Horsepower vs Miles per Gallon'
)
chart.show()
Pygal 是一个开源的 Python 数据可视化库,专门用于创建高度互动的图表和图形。以下是 Pygal 的一些关键特性:
总的来说,Pygal 是一个简单而功能强大的数据可视化工具,它通过提供丰富的图表类型、高度的可定制性和交互性,使得数据展示变得更加直观和吸引人。
import pygal
from IPython.display import SVG, display
# 创建折线图对象
line_chart = pygal.Line()
line_chart.title = 'Simple Line Chart Example'
line_chart.x_labels = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']
line_chart.add('Series 1', [1, 2, 3, 4, 5, 6])
line_chart.add('Series 2', [6, 5, 4, 3, 2, 1])
# 设置图像大小(宽度和高度)
line_chart.width = 600
line_chart.height = 300
# 渲染图表为SVG字符串
svg_data = line_chart.render(is_unicode=True)
# 在Jupyter Notebook中显示图表
display(SVG(svg_data))
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。