Python数据可视化的五种方法小结

 更新时间:2025年04月11日 08:29:24   作者:python慕遥  
大家好,在数据驱动决策的时代,数据可视化是挖掘数据价值的重要一环,本文将介绍五种极为实用的高级可视化图表,从原理到代码实现,一站式助力绘制数据图,需要的朋友可以参考下

1.和弦图 

和弦图以富有创意的方式呈现数据点间的复杂关系。

在和弦图中,节点环绕成一个圆形,通过弧线彼此相连。弧长对应连接值的大小,而弧线的粗细则直观体现关系的重要程度。同时,利用不同颜色对数据进行分类,方便用户进行对比分析。

因其强大的关系展示能力,和弦图被广泛应用于众多领域,在基因数据可视化方面表现尤为突出。

下面用 Holoviews 和 Bokeh 库,来创建一个展示五个国家贸易关系的和弦图。

import holoviews as hv
from holoviews import opts
import pandas as pd
import numpy as np
hv.extension('bokeh')
 
# 代表5个国家之间出口量的示例矩阵
export_data = np.array([[0, 50, 30, 20, 10],   
                        [10, 0, 40, 30, 20],   
                        [20, 10, 0, 35, 25],   
                        [30, 20, 10, 0, 40],   
                        [25, 15, 30, 20, 0]]) 
 
labels = ['美国', '中国', '德国', '日本', '印度']
 
# 创建一个pandas DataFrame
df = pd.DataFrame(export_data, index=labels, columns=labels)
df = df.stack().reset_index()
df.columns = ['来源', '目标', '数值']
 
# 创建一个Chord对象
chord = hv.Chord(df)
 
# 对和弦图进行样式设置
chord.opts(
    opts.Chord(
        cmap='Category20', edge_cmap='Category20', 
        labels='source', label_text_font_size='10pt',  
        edge_color='source', node_color='index', 
        width=700, height=700
    )
).select(value=(5, None)) 
 
# 显示图表
chord

2.旭日图 

旭日图超越了传统的饼图和环形图,能够清晰展示层次结构数据。

旭日图用同心圆表示不同层级,中心是根节点,扇形代表具体节点。扇形大小和数据值挂钩,数据重要程度一目了然。

在可视化文件系统层级结构、用户导航路径、市场细分和基因数据等方面很有用,下面是使用Plotly库创建旭日图的示例。

import plotly.express as px
import numpy as np
 
df = px.data.gapminder().query("year == 2007")
 
fig = px.sunburst(df, path=['continent', 'country'], 
                  values='pop',
                  color='lifeExp', 
                  hover_data=['iso_alpha'],
                  color_continuous_scale='RdBu',
                  color_continuous_midpoint=np.average(df['lifeExp'], weights=df['pop']))
fig.show()

3.六边形热力图

六边形热力图(Hexbin Plot),即六边形分箱图,在可视化二维数据分布方面非常有效,尤其适用于数据点密集的情况。它将数据空间划分为六边形单元格,单元格颜色表示其中数据点的数量,能清晰呈现数据的分布情况。

下面是使用Python和Matplotlib创建六边形热力图的示例,展示空气质量指数(AQI)和医院就诊人数之间的相关性。

import numpy as np
import matplotlib.pyplot as plt
from mplhexbin import HexBin
 
# 模拟数据
np.random.seed(0)  # 确保结果可复现
n_points = 10000
x = np.random.rand(n_points) * 100# 空气质量指数(AQI)取值范围为0到100
y = 5 * np.sin(x * np.pi / 50) + np.random.randn(n_points) * 15# 模拟的医院就诊人数,与AQI相关但存在噪声
 
# 创建一个新的图形
fig, ax = plt.subplots(figsize=(10, 8))
 
# 使用HexBin创建六边形分箱图
hb = HexBin(ax, gridsize=20, cmap='viridis', extent=[0, 100, -30, 50])  # 设置网格大小、颜色映射和范围
hb.hexbin(x, y, mincnt=1)  # 绘制六边形分箱图,mincnt设置最小计数阈值
 
# 添加标题和轴标签
ax.set_title('空气质量指数(AQI)与医院就诊人数之间的关系')
ax.set_xlabel('空气质量指数(AQI)')
ax.set_ylabel('医院就诊人数')
 
# 显示图形
plt.colorbar(hb.cmap, ax=ax, label='数据点数量')  # 添加颜色条并设置标签
plt.show()

4.桑基图 

桑基图用于可视化数据流动,非常适合展示能源、材料和金融等领域的数据。

它以马修·亨利·菲尼亚斯·里亚尔·桑基(Matthew Henry Phineas Riall Sankey)的名字命名,能展示系统各阶段或各部分之间的流量。节点宽度与流量大小成正比,便于理解数据的规模和流向。

下面是使用Python创建桑基图的示例,展示从生产源头到小城市消费者的能源流动情况。

import plotly.graph_objects as go
 
labels = ["煤炭", "太阳能", "风能", "核能", "居民", "工业", "商业"]
 
source = [0, 1, 2, 3, 0, 1, 2, 3] 
target = [4, 4, 4, 4, 5, 5, 5, 5] 
value = [25, 10, 40, 20, 30, 15, 25, 35] 
 
# 创建桑基图对象
fig = go.Figure(data=[go.Sankey(
    node=dict(
        pad=15,  
        thickness=20, 
        line=dict(color="black", width=0.5),
        label=labels 
    ),
    link=dict(
        source=source,  
        target=target, 
        value=value  
    ))])
 
fig.update_layout(title_text="模范城市的能源流动", font_size=12)
fig.show()

5.流图(主题河流图) 

流图形似河流,用于描绘数据随时间的变化。不同颜色区分不同类别,“河流”的宽度代表每个类别的数值大小。它以可视化的方式展示数据趋势和关系,便于理解数据动态。

下面是用Altair库创建流图的示例:

import altair as alt
from vega_datasets import data
 
source = data.unemployment_across_industries.url
 
alt.Chart(source).mark_area().encode(
    alt.X('yearmonth(date):T',
        axis=alt.Axis(format='%Y', domain=False, tickSize=0)
    ),
    alt.Y('sum(count):Q', stack='center', axis=None),
    alt.Color('series:N',
        scale=alt.Scale(scheme='category20b')
    )
).interactive()

在数据驱动的时代,高级可视化图表为我们提供了挖掘数据深层价值的强大工具。无论是和弦图的复杂关系呈现、旭日图的层次结构解析,还是六边形热力图的数据分布洞察,桑基图的流动分析和流图的时间趋势展示,都拓展了我们对数据的理解维度。掌握这些工具,意味着能够用更专业、更精准的方式传递信息,让数据真正成为推动业务和科研进步的引擎。

以上就是Python数据可视化的五种方法小结的详细内容,更多关于Python数据可视化的资料请关注脚本之家其它相关文章!

相关文章

  • Python列表解析操作实例总结

    Python列表解析操作实例总结

    这篇文章主要介绍了Python列表解析操作,结合实例形式总结分析了Python列表解析常见的列表推导式、循环语句、条件列表、嵌套列表等相关操作技巧,需要的朋友可以参考下
    2020-02-02
  • pytorch.range()和pytorch.arange()的区别及说明

    pytorch.range()和pytorch.arange()的区别及说明

    这篇文章主要介绍了pytorch.range()和pytorch.arange()的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • tensorflow: 查看 tensor详细数值方法

    tensorflow: 查看 tensor详细数值方法

    今天小编就为大家分享一篇tensorflow: 查看 tensor详细数值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Python实现网页内容转纯文本与EPUB电子书的完整指南

    Python实现网页内容转纯文本与EPUB电子书的完整指南

    在信息爆炸的时代,我们每天都会浏览大量网页内容,本文将通过Python实现两种主流保存方案,即纯文本格式TXT和电子书标准格式EPUB,感兴趣的小伙伴可以了解一下
    2026-02-02
  • 深入了解Python 变量作用域

    深入了解Python 变量作用域

    这篇文章主要介绍了Python 变量作用域的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • Python 运算符Inplace 与Standard 

    Python 运算符Inplace 与Standard 

    这篇文章主要介绍了Python 运算符Inplace 与Standard,nplace运算符的行为类似于普通运算符,只是它们在可变和不可变目标的情况下以不同的方式运行
    2022-09-09
  • pytorch框架的详细介绍与应用详解

    pytorch框架的详细介绍与应用详解

    这篇文章主要介绍了pytorch框架的详细介绍与应用,Torch 是一个经典的对多维矩阵数据进行操作的张量(tensor )库,在机器学习和其他数学密集型应用有广泛应用,本文给大家详细讲解,需要的朋友可以参考下
    2023-04-04
  • 8行代码实现Python文件去重

    8行代码实现Python文件去重

    本文主要介绍了Python文件去重,所以就想使用Python自动化解决,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • PyTorch中 tensor.detach() 和 tensor.data 的区别解析

    PyTorch中 tensor.detach() 和 tensor.data 的

    这篇文章主要介绍了PyTorch中 tensor.detach() 和 tensor.data 的区别解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • Python搭建代理IP池实现检测IP的方法

    Python搭建代理IP池实现检测IP的方法

    这篇文章主要介绍了Python搭建代理IP池实现检测IP的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10

最新评论