在数据驱动决策的时代,数据可视化是挖掘数据价值的重要一环。今天,安利大家五种极为实用的高级可视化图表,从原理到代码实现,一站式带你搞定!

7 Best Python Visualization Techniques for EDA: Enhance Insights | by Meng  Li | Top Python Libraries | Medium

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学习路线汇总👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

👉Python必备开发工具👈

在这里插入图片描述

👉Python学习视频合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

👉实战案例👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

👉Python副业兼职路线&方法👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

在这里插入图片描述

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐