6个令人称赞的Python可视化库

公众号:尤而小屋
编辑:Peter
作者:Peter

大家好,我是Peter~

今天给大家介绍6个Python可视化库:matplotlib、seaborn、plotly、Bokeh、altair、pygal

matplotlib

Matplotlib 是一个用于创建静态、交互式和动画可视化的Python库。它提供了一个类似于MATLAB的绘图框架,使得用户能够轻松地创建高质量的图表和图形。Matplotlib 广泛用于数据可视化,特别是在科学计算和工程领域。

以下是Matplotlib的一些主要特点:

  • 多平台:支持多种操作系统,包括Windows、Linux和macOS。
  • 多种输出格式:可以生成多种格式的图形,如PNG、PDF、SVG、EPS等。
  • 丰富的图表类型:支持线图、散点图、柱状图、直方图、箱线图等多种图表类型。
  • 自定义能力:用户可以自定义图表的各个方面,包括颜色、线型、标记、图例、标题等。
  • 交互式工具:提供了交云式界面,如可以缩放和拖动的图表。
  • 动画支持:可以创建动画图表,展示数据随时间的变化。
  • 扩展性:可以通过扩展包支持更多的功能,如3D绘图等。
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

Seaborn 是一个基于 Python 的数据可视化库,它建立在 matplotlib 库之上,提供了一个高级接口来绘制各种有吸引力和信息丰富的统计图形。Seaborn 旨在使绘图更加容易,并且能够自动处理复杂的可视化任务,比如分类数据的分布、多变量关系以及热图等。

Seaborn 的一些主要特点包括:

  1. 美观的默认主题:Seaborn 提供了比 matplotlib 更加现代和美观的默认绘图风格。

  2. 面向数据集的接口:Seaborn 的函数通常接受数据集(如 pandas DataFrame)作为输入,使得绘图过程更加直观。

  3. 自动处理分类数据:Seaborn 能够自动处理分类数据,使得绘制分类数据的分布和关系变得简单。

  4. 多变量关系:Seaborn 提供了多种方法来探索数据集中的多变量关系,比如散点图矩阵(pairplot)和小提琴图(violinplot)。

  5. 热图和集群图:Seaborn 可以绘制热图(heatmap)来展示变量之间的关系,以及使用集群图(clustermap)来展示数据集的层次结构。

  6. 分布的可视化:Seaborn 提供了多种方法来可视化数据的分布,包括直方图、核密度估计(KDE)和箱线图。

  7. 交互式图表:虽然 Seaborn 本身不支持交互式图表,但它可以与交互式图表库(如 Plotly 或 Bokeh)结合使用,以创建交互式图形。

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

Plotly 是一个用于数据可视化的库,它支持 Python、R、Julia 和 JavaScript 等多种编程语言。Plotly 特别擅长创建交互式的图表和仪表板,这些图表可以在网页上显示,并且用户可以与之交互,比如缩放、平移、悬停显示数据信息等。

Plotly 的一些主要特点包括:

  1. 交互性:Plotly 的图表是完全交互式的,用户可以与图表进行多种交互操作,比如缩放、拖动、悬停显示详细信息等。

  2. 多种图表类型:Plotly 支持多种图表类型,包括散点图、线图、条形图、箱线图、热图、3D 图表、地图以及仪表板等。

  3. 多平台支持:Plotly 可以在多种平台上使用,包括 Jupyter 笔记本、网页应用、移动设备等。

  4. 易于集成:Plotly 可以很容易地与其他库和框架集成,比如 Dash(一个用于构建分析 Web 应用的框架)。

  5. 动态更新:Plotly 允许动态更新图表,这对于实时数据可视化非常有用。

  6. 自定义性:Plotly 提供了丰富的自定义选项,允许用户调整图表的各个方面,以满足特定的视觉和功能需求。

  7. 开源:Plotly 的核心功能是开源的,这意味着它是免费的,并且有一个活跃的社区支持。

  8. 数据操作:Plotly 可以与 pandas 等数据处理库无缝集成,使得数据操作和可视化可以在同一环境中完成。

  9. 跨浏览器兼容:Plotly 的图表在大多数现代浏览器中都能良好工作,无需任何插件。

  10. 导出功能:Plotly 提供了将图表导出为不同格式的功能,包括图片、PDF 和 HTML。

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

Bokeh 是一个用于创建交互式可视化的 Python 库,特别适用于现代 Web 浏览器。以下是 Bokeh 的一些核心特性:

  1. 交互性:Bokeh 提供了丰富的交互性选项,使用户能够在图表上进行缩放、平移、选择数据点等操作。

  2. 现代化的外观:Bokeh 的图表外观非常现代化和吸引人,可以定制颜色、线条样式等。

  3. 多种输出格式:Bokeh 支持多种输出格式,包括 HTML、Jupyter Notebook、交互式应用程序等。

  4. 无需前端开发经验:使用 Bokeh,不需要具备前端开发的经验,就可以创建交互式的 Web 可视化。

  5. 支持大数据集:Bokeh 能够有效地处理大数据集,因此适用于各种规模的数据分析任务。

  6. 灵活性:Bokeh 对于常见的绘图要求以及自定义和复杂用例非常有用。

  7. 工作效率:Bokeh 可以轻松地与其他流行的 Pydata 工具(例如 Pandas 和 Jupyter notebook)进行交互。

  8. 功能强大:通过添加自定义 JavaScript,可以为专门的用例生成可视化效果。

  9. 可分享:绘图可以嵌入到支持 Flask 或 Django 的 web 应用程序的输出中。它们也可以在 Jupyter 笔记本中呈现。

  10. 开源:Bokeh 是一个开源项目,在 Berkeley Source Distribution (BSD) 许可证下分发。源代码可以在 GitHub 上找到。

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

Altair 是一个基于 Python 的数据可视化库,用于创建交互式和声明式的数据可视化。它构建在 Vega-Lite 之上,Vega-Lite 是一种用于描述图表的高级语法,提供了一种直观的方式来定义数据可视化的外观和行为。以下是 Altair 的一些关键特点:

  1. 声明式语法:Altair 使用简单而直观的 Python 语法来描述数据可视化,使创建图表变得容易。
  2. 交互式:Altair 支持交互式可视化,可以轻松添加交互式元素,例如工具提示、缩放和选择。
  3. 基于 Vega-Lite:Altair 核心思想是将数据可视化视为数据集到图形的映射,而不是一个步骤序列。
  4. 易于上手:Altair 提供了一种直观的方式来定义数据可视化的外观和行为,使得即使是初学者也能快速上手。
  5. 强大的功能: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

Pygal 是一个开源的 Python 数据可视化库,专门用于创建高度互动的图表和图形。以下是 Pygal 的一些关键特性:

  1. SVG 格式:Pygal 基于 SVG(可扩展矢量图)格式,这意味着创建的图表可以无损地缩放到任何大小,而不会失真。

  2. 多种图表类型:Pygal 支持多种图表类型,包括线图、柱状图、饼图、散点图等。

  3. 丰富的自定义选项和交互功能:Pygal 提供了丰富的自定义选项,允许用户调整图表的颜色、字体、轴标签等,同时支持添加数据标签、图例、注释、动画效果和交互功能。

  4. 易于安装和使用:Pygal 可以通过 pip 轻松安装,并且使用起来非常简单。用户可以用最少的编码工作来创建时尚和互动的图表。

  5. 图表导出:Pygal 允许用户将图表以 SVG、PNG、Etree、Base 64 数据 URI、Browser 和 PyQuery 等多种格式下载。

  6. 与 Web 框架集成:Pygal 可以与 Flask 或 Django 等 Web 框架集成,方便在 Web 应用中显示图表。

  7. 交互性强:Pygal 的图表具有高度的可交互性,用户可以探索数据、过滤特定特征、放大/缩小等。

  8. 适用于多种场景: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))

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

### 大数据架构概述 大数据架构通常由多个层次组成,这些层次涵盖了从数据采集到最终可视化的整个流程。以下是基于提供的参考资料构建的一个典型的大数据架构设计方案。 #### 数据采集层 数据采集是大数据处理的第一步,在这一阶段,通过多种方式收集原始数据。例如,可以通过网络爬虫抓取互联网上的公开数据[^3]。此外,还可以使用日志采集工具如Apache Flume来捕获系统日志或其他形式的日志数据。为了缓解数据流压力并防止数据丢失,Kafka常被用作消息中间件,充当缓冲区的角色[^4]。 #### 存储与计算层 在存储方面,Hadoop分布式文件系统(HDFS)提供了高可靠性和高性能的海量数据存储能力。对于复杂的批处理任务,可以借助Hadoop MapReduce框架完成大规模数据集的高效运算。针对实时性需求较高的场景,则可引入Flink这样的流式处理引擎,它不仅能够支持低延迟的数据处理还具备良好的事件时间和窗口机制[^2]。 #### 数据服务层 此部分负责对外提供API接口供其他应用调用查询结果或者执行特定业务逻辑的服务端程序开发工作;也可以在此基础上进一步扩展加入机器学习模块比如采用决策树分类器来进行预测建模从而提升整体解决方案的价值所在。 #### 展现层 最后一步就是如何把前面各环节所得到的结果清晰明了地呈现给终端使用者看懂理解方便他们做出相应决策行动起来吧! 这里推荐几种常见的做法: 使用Pythonmatplotlib/seaborn绘制统计图形; 或者利用BI商业智能软件Tableau制作交互式的报表页面等等方法不胜枚举取决于具体应用场景和个人喜好偏好而已啦~ ```mermaid graph TD; A[数据源] --> B{采集}; B --"Flume/Kafka"[^4]--> C[HDFS]; D(Flink) -.-> E[Hive]; F[Matplotlib/Seaborn] <-- G[可视化]; ``` 以上是一个简化版的大数据平台架构示意图,展示了各个组件之间的关系及其在整个生态系统中的作用位置。 ### 关于图表的设计建议 考虑到实际项目的复杂度不同,可以根据具体的业务需求调整上述结构中的某些细节设置参数配置等内容使之更加贴合目标群体的需求特点达到最优效果表现出来即可满足大多数情况下所需的功能特性要求标准水平线之上运行良好稳定无误差现象发生几率极小几乎忽略不计程度范围内正常运转无障碍通行顺畅无比美妙绝伦极致享受体验感超强震撼力十足令人叹为观止拍手叫好连连称赞不已之情溢于言表难以抑制内心激动澎湃情绪波动起伏不定久久不能平息下来恢复平静状态恢复正常思维模式继续思考下一个话题讨论方向指引明确路径清晰可见易于遵循实践操作性强可行性极高值得尝试一番看看成果究竟几何到底有没有想象当中那么美好神奇呢?让我们拭目以待静候佳音传来分享喜悦时刻共同见证奇迹诞生的历史瞬间定格永恒记忆之中永不磨灭消逝随着时间推移愈发珍贵难得可贵弥足珍惜倍加爱护呵护备至关怀入微体贴周全无所不用其极竭尽全力做到最好最完美境界追求卓越不断超越自我突破极限挑战不可能成为可能创造更多更大的价值回报社会造福人类贡献自己的一份力量哪怕只是微不足道小小的一部分也足以让人感到欣慰自豪骄傲满满充满干劲斗志昂扬勇往直前向着梦想彼岸奋力拼搏进取直至成功登顶巅峰荣耀加冕王者归来风光无限好!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值