当前位置:首页 > 科技  > 软件

高大上!五个python高级可视化图表!

来源: 责编: 时间:2024-05-22 17:09:34 317观看
导读1. 和弦图(Chord Diagram)和弦图,作为一种数据可视化工具,独具匠心地展示了数据间的复杂关系。在图表中,节点井然有序地分布于圆周之上,点与点之间则以优雅的弧线相互连接,这些弧线不仅揭示了数据间的内在联系,还通过其长度的

1. 和弦图(Chord Diagram)

和弦图,作为一种数据可视化工具,独具匠心地展示了数据间的复杂关系。在图表中,节点井然有序地分布于圆周之上,点与点之间则以优雅的弧线相互连接,这些弧线不仅揭示了数据间的内在联系,还通过其长度的差异,直观地反映了连接间的数值大小。更进一步,弧线的粗细程度还巧妙地映射出数据间关系的重要性,使观察者能一目了然地洞察数据背后的故事。mi928资讯网——每日最新资讯28at.com

此外,和弦图还巧妙地运用了色彩这一视觉元素,将数据分门别类,使得数据的比较和区分变得直观且易于理解。这一特性使得和弦图在多个领域都有着广泛的应用,特别是在生物科学领域,它成为了可视化基因数据的得力助手。在国际学术刊物上,和弦图更是被誉为信息图表(info graphics)的典范,用于揭示社交网络的交织、基因组的奥秘、交通流的动态以及贸易关系的错综复杂。mi928资讯网——每日最新资讯28at.com

mi928资讯网——每日最新资讯28at.com

以下示例代码使用Holoviews & Bokeh创建和弦图,展示5个不同国家之间的贸易关系。mi928资讯网——每日最新资讯28at.com

import holoviews as hvfrom holoviews import optsimport pandas as pdimport numpy as nphv.extension('bokeh')# Sample matrix representing the export volumes between 5 countriesexport_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 = ['USA', 'China', 'Germany', 'Japan', 'India']# Creating a pandas DataFramedf = pd.DataFrame(export_data, index=labels, columns=labels)df = df.stack().reset_index()df.columns = ['source', 'target', 'value']# Creating a Chord objectchord = hv.Chord(df)# Styling the Chord diagramchord.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)) # Display the plotchord

mi928资讯网——每日最新资讯28at.com

https://holoviews.org/reference/elements/matplotlib/Chord.htmlmi928资讯网——每日最新资讯28at.com

https://github.com/moshi4/pyCirclizemi928资讯网——每日最新资讯28at.com

2. 旭日图(Sunburst Chart)

旭日图(Sunburst Chart)以其独特的视觉呈现方式,超越了传统的饼图和环图,能够清晰地表达数据的层级和归属关系。它通过父子层次结构来展示数据的构成情况,使用户能够轻松理解和分析复杂的层次数据。mi928资讯网——每日最新资讯28at.com

旭日图由多个环形组成,每个环形都代表着层次结构中的一个不同级别。图表的中心是层次结构的根或顶层,象征着数据的起点。每个环上的每个部分或扇区则代表着该层次结构中的一个具体节点,而每个部分/扇区的大小则与其在兄弟节点中的相对值成比例,直观地反映了数据的重要性。mi928资讯网——每日最新资讯28at.com

旭日图在多个领域中都展现出了其强大的数据可视化能力,如计算机文件系统的层级结构、网站用户的导航路径、市场细分数据的层级关系以及复杂的基因组数据等。这些应用场景都通过旭日图得以清晰、直观地呈现,帮助用户快速理解数据的内在结构和逻辑关系。mi928资讯网——每日最新资讯28at.com

下面是一段使用Python库Plotly绘制旭日图的示例代码,您可以通过这段代码轻松创建出具有丰富层次结构和数据信息的旭日图。mi928资讯网——每日最新资讯28at.com

import plotly.express as pximport numpy as npdf = 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()

mi928资讯网——每日最新资讯28at.com

https://plotly.com/python/sunburst-charts/mi928资讯网——每日最新资讯28at.com

3. 六边形箱图(Hexbin Plot)

mi928资讯网——每日最新资讯28at.com

六边形箱图(通常称为六边形分箱图或六边形热力图)是一种非常有效的可视化工具,用于展示二维数据分布,尤其是在数据点过于密集而导致传统散点图难以区分单个点的情况下。这种方法将数据空间划分为一系列六边形单元(或“箱”),并根据每个单元中的数据点数量进行着色,从而提供了数据分布情况的直观表示。mi928资讯网——每日最新资讯28at.com

以下是一个使用Python和Matplotlib库创建六边形分箱图的示例,旨在揭示空气质量恶化(使用空气质量指数/AQI)与增加的医院就诊之间的潜在相关性。请注意,为了简化示例,我们将使用模拟数据。mi928资讯网——每日最新资讯28at.com

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()

mi928资讯网——每日最新资讯28at.com

https://matplotlib.org/stable/gallery/statistics/hexbin_demo.htmlmi928资讯网——每日最新资讯28at.com

4. 桑基图(Sankey Diagram)

桑基图(Sankey Diagram),也被称为桑基能量分流图或桑基能量平衡图,是一种特殊类型的流程图,特别适用于展示能源、材料成分、金融等领域中数据流量的可视化分析。这一图表类型的命名源于1898年Matthew Henry Phineas Riall Sankey所绘制的“蒸汽机的能源效率图”,该图因其直观展示能量流动的方式而广受赞誉,并因此得名“桑基图”。mi928资讯网——每日最新资讯28at.com

桑基图通过节点和它们之间的链接来表示系统不同阶段或部分之间数量的流动。节点通常表示系统中的不同部分或阶段,而链接则表示这些部分或阶段之间的流动关系。最为独特的是,桑基图中链接的宽度直接与流动的数量成比例,使得数据的规模和流向一目了然。mi928资讯网——每日最新资讯28at.com

通过这种直观的数据可视化方式,桑基图可以帮助用户更好地理解系统中各部分之间的能量、物质或资金的流动情况,从而有助于做出更明智的决策。在能源、材料科学、经济学和金融学等领域,桑基图已经成为一种不可或缺的数据分析工具。mi928资讯网——每日最新资讯28at.com

mi928资讯网——每日最新资讯28at.com

Plotly库可以用来创建如下所示的桑基图。以下代码表示能量从生产源流向小城市的消费者。mi928资讯网——每日最新资讯28at.com

import plotly.graph_objects as golabels = ["Coal", "Solar", "Wind", "Nuclear", "Residential", "Industrial", "Commercial"]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] # Create the Sankey diagram objectfig = 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="Energy Flow in Model City", font_size=12)fig.show()

mi928资讯网——每日最新资讯28at.com

https://plotly.com/python/sankey-diagram/mi928资讯网——每日最新资讯28at.com

5. 主题河流图(Stream Graph/ Theme River)

主题河流图,顾名思义,其形态宛如自然界的河流,实际上它是一种独具匠心的流图设计。这种图表主要用于描绘事件或主题随时间而发生的动态变化。河流图中,不同的颜色巧妙地区分了各个类别,或用以展示每个类别的附加定量信息。而河流的流向则与横贯图表的X轴平行,清晰映射出时间的流逝。mi928资讯网——每日最新资讯28at.com

更为精妙的是,每个类别的数值大小通过“河流”的宽度来直观展现。当某一类别的数值增大时,其对应的河流部分便会拓宽;而当数值减小,河流则相应地变窄。这种变化使得整个图表仿佛是由无数条宽窄不一的河流汇集、交织而成,从而得名“主题河流图”。这种设计不仅富有美感,更能让观察者一目了然地掌握数据的变化趋势和相互关系。mi928资讯网——每日最新资讯28at.com

mi928资讯网——每日最新资讯28at.com

Altair数据可视化库可用于绘制流图,如下所示。mi928资讯网——每日最新资讯28at.com

import altair as altfrom vega_datasets import datasource = data.unemployment_across_industries.urlalt.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()

mi928资讯网——每日最新资讯28at.com

https://altair-viz.github.io/gallery/streamgraph.htmlmi928资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-90032-0.html高大上!五个python高级可视化图表!

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 华为云数据安全体系技术创新论坛圆满落幕,携手多方共绘数据安全新蓝图

下一篇: 编程语言 Kotlin 2.0.0 现已发布,K2 编译器进入稳定状态

标签:
  • 热门焦点
  • Mate60手机壳曝光 致敬自己的经典设计

    8月3日消息,今天下午博主数码闲聊站带来了华为Mate60的第三方手机壳图,可以让我们在真机发布之前看看这款华为全新旗舰的大致轮廓。从曝光的图片看,Mate 60背后摄像头面积依然
  • 直屏旗舰来了 iQOO 12和K70 Pro同台竞技

    旗舰机基本上使用的都是双曲面屏幕,这就让很多喜欢直屏的爱好者在苦等一款直屏旗舰,这次,你们等到了。据博主数码闲聊站带来的最新爆料称,Redmi下代旗舰K70 Pro和iQOO 12两款手
  • 摸鱼心法第一章——和配置文件说拜拜

    为了能摸鱼我们团队做了容器化,但是带来的问题是服务配置文件很麻烦,然后大家在群里进行了“亲切友好”的沟通图片图片图片图片对比就对比,简单对比下独立配置中心和k8s作为配
  • 在线图片编辑器,支持PSD解析、AI抠图等

    自从我上次分享一个人开发仿造稿定设计的图片编辑器到现在,不知不觉已过去一年时间了,期间我经历了裁员失业、面试找工作碰壁,寒冬下一直没有很好地履行计划.....这些就放在日
  • 自动化在DevOps中的力量:简化软件开发和交付

    自动化在DevOps中扮演着重要角色,它提升了DevOps的效能。通过自动化工具和方法,DevOps团队可以实现以下目标:消除手动和重复性任务。简化流程。在整个软件开发生命周期中实现更
  • 为什么你不应该使用Div作为可点击元素

    按钮是为任何网络应用程序提供交互性的最常见方式。但我们经常倾向于使用其他HTML元素,如 div span 等作为 clickable 元素。但通过这样做,我们错过了许多内置浏览器的功能。
  • 腾讯VS网易,最卷游戏暑期档,谁能笑到最后?

    作者:无锈钵来源:财经无忌7月16日晚,上海1862时尚艺术中心。伴随着幻象的精准命中,硕大的荧幕之上,比分被定格在了14:12,被寄予厚望的EDG战队以绝对的优势战胜了BLG战队,拿下了总决
  • OPPO K11搭载高性能石墨散热系统:旗舰同款 性能凉爽释放

    日前OPPO官方宣布,将于7月25日14:30举办新品发布会,届时全新的OPPO K11将正式与大家见面,将主打旗舰影像,和同档位竞品相比,其最大的卖点就是将配备索尼
  • 滴滴违法违规被罚80.26亿 共存在16项违法事实

    滴滴违法违规被罚80.26亿 存在16项违法事实开始于2121年7月,历经一年时间,网络安全审查办公室对“滴滴出行”网络安全审查终于有了一个暂时的结束。据“网信
Top