跟着高分SCI学画图:GPT教你绘制旭日图

文摘   2024-08-16 21:45   德国  

花里胡哨的饼图?多拼披萨图!——旭日图

旭日图(Sunburst Chart)是一种数据可视化工具,主要用于展示层次结构数据。它通过使用嵌套的环形图来表示数据的层级关系,从中心向外扩展。每一层代表数据的一个层次,越外层的环表示越深层次的数据节点。旭日图在对数字类数据的可视化效果较差,但是相对的,旭日图对分类数据的可视化效果往往非常好。今天,我们要使用这个特点来帮我们更全面的了解一组房产数据。不过在那之前,让我们先来了解一下旭日图这种图表吧。

旭日图小样

旭日图的特点和优缺点

特点

  • 层次结构表示:旭日图通过嵌套的圆环展示数据的层次关系,非常直观地显示了从根节点到叶节点的路径。
  • 颜色编码:通常使用不同的颜色来区分不同的类别或层次,增强可视化效果。
  • 占比展示:通过扇形的面积可以展示每个分类所占的比例,便于比较。

优点

  • 清晰的层次结构:能直观地表示数据的层次结构,使复杂的数据关系易于理解。
  • 空间利用高效:相比树状图,旭日图更高效地利用空间,适合展示大量层次数据。
  • 美观:图形美观,有助于吸引观众的注意力,适合展示和汇报。

缺点

  • 阅读困难:当数据层次较多或节点数量较大时,图表可能变得难以阅读和理解。
  • 对比较不友好:不同层次的扇形之间的比较不如柱状图或条形图直观。
  • 标签问题:如果扇形过小,标签可能无法显示或显示不清楚。

Plotly的自我介绍

不同于前几期,我们今天的可视化不会使用matplotlib,就旭日图而言,Python的另一个库:plotly能够更简单和清晰的对我们的分类数据进行可视化处理。考虑到这是我们第一次使用plotly,让我们来简单的了解一下这个库吧

Plotly 是一个用于创建互动数据可视化的开源库,广泛应用于数据科学、金融、工程等领域。以下是 Plotly 的一些主要优缺点总结:

优点

  • 交互性强:Plotly 图表支持放大、缩小、平移、悬停显示数据等多种交互功能,能够更好地探索和分析数据。
  • 丰富的图表类型:提供了多种图表类型,包括散点图、折线图、柱状图、饼图、气泡图、热图、三维图表等,满足不同数据可视化需求。
  • 高质量的图形输出:Plotly 生成的图表具有高质量和专业的外观,可以用于报告和演示。
  • 跨平台兼容性:支持在 Jupyter Notebook、Web 浏览器、桌面应用程序和移动设备上显示图表,方便在不同平台之间共享和展示数据。
  • Python 友好:与 Pandas、NumPy 等常用 Python 数据分析库兼容,易于集成到现有的 Python 数据分析工作流程中。
  • 开放源码:Plotly 是开源的,可以自由使用和修改,社区活跃,拥有大量的文档和示例。

缺点

  • 性能问题:对于非常大规模的数据集,Plotly 的性能可能会下降,渲染速度较慢。
  • 复杂性:对于初学者来说,Plotly 的 API 可能显得复杂,特别是在创建高度自定义的图表时,需要掌握较多的细节。
  • 文件体积较大:生成的图表文件可能较大,特别是包含大量数据点或高度自定义的图表,在网络传输时会受到影响。
  • 商业化限制:虽然 Plotly 的基础功能是免费的,但一些高级功能和企业级服务是收费的。
  • 文档和社区支持:虽然 Plotly 有良好的文档和社区支持,但相比于一些更流行的库(如 Matplotlib、Seaborn),资源相对较少。

数据介绍

我们今天要了解的是一组在售房产数据,让我们先来看看数据集吧。如大家所见,数据集共有包括价格(price);卧室数量(bedroom)和层数(floor)等21个特征。其中卧室数量(bedroom)卫生间数量(bathroom)房子现况(condition)层数(floor)和评级(grade)是分类数据。也是我们今天用旭日图来完成可视化的部分。

画图

加载环境

import pandas as pd
import numpy as np
import plotly.express as px

导入数据

data = pd.read_csv('/content/kc_house_data.csv')

绘图

fig = px.sunburst(
    data,
    path=[ 'floors',  'bedrooms',  'condition''grade'],
    title='Sunburst Plot for Categorical Dataset',
)

# Show the plot
fig.show()
  • data:这是你的数据集,应该是一个包含多个分类列的 Pandas DataFrame。
  • path:这是一个包含列名的列表,用于定义 Sunburst 图的层级结构。在这个例子中,层级顺序是 floors、bedrooms、condition 和 grade,表示从外到内的层级关系。
  • title:这是图表的标题,用于显示在图表上方。
效果图

拓展

图是做出来了,但是它在目前的状态下很难读懂。在没有看过或者不理解代码的情况下基本无法从这个图表中提取任何有效的信息,这就与我们作图的初衷背道而驰了。

更改图标(提高数据集质量)

事实上,我们在绘图之前跳过了很关键的一部分。我们跳过了数据集本身的清理和完善,这才导致了第一次生成的效果图几乎完全不可读。那我们现在来补上这一步吧!

如大家所见,数据原本每列中只含有数字,而我们可以将他改成数据列的意义:数字的格式。这样,光看也能理解数字代表的意义了.

data['bedrooms'] = data['bedrooms'].apply(lambda x: f'bedrooms:{x}')
data['floors'] = data['floors'].apply(lambda x: f'floors:{x}')
data['condition'] = data['condition'].apply(lambda x: f'house rating:{x}')
data['grade'] = data['grade'].apply(lambda x: f'house grade:{x}')
  • 在将每一列的格式从数字改成本列的含义:数字

更改颜色

color_sequence = px.colors.qualitative.Pastel

  • px.colors.qualitative:这是 Plotly Express 提供的一组预定义的定性颜色序列,常用于分类数据的可视化。
  • Pastel:这是一个特定的定性颜色序列名称,表示一组柔和的、浅色的颜色,适用于需要使用颜色区分多个类别但不希望颜色过于鲜艳的场景。
fig = px.sunburst(
    data,
    path=[ 'floors',  'bedrooms',  'condition''grade'],
    title='Sunburst Plot for Categorical Dataset',
    color='condition',  # Base the colors on the 'condition' column
    color_continuous_scale=custom_colors
)
  • data:这是你的数据集,通常是一个 Pandas DataFrame,其中包含你要可视化的数据。
  • path:这是一个列表,指定了数据集中用于构建 Sunburst 图层级关系的列名。这里包括 floors(楼层数)、bedrooms(卧室数)、condition(房屋状况)和 grade(房屋等级)。这些列将用于定义图表的不同层级,从外到内依次表示不同的分类。
  • title:图表的标题,将显示在图表的顶部。这有助于理解图表的内容和目的。
  • color:这是一个字符串,指定用于设置颜色的列名。这里选择了 condition 列,这意味着每个分支的颜色将基于其 condition 值。
  • color_continuous_scale:这是一个颜色序列,用于指定图表中分支的颜色。这里使用了 custom_colors,它是一个预定义的颜色列表。它将应用于 condition 列,确保不同的房屋状况具有不同的颜色。

更改大小

fig.update_layout(
    width=1200,  # Set the width
    height=900  # Set the height
)
  • fig.update_layout:fig 是之前创建的 Sunburst 图对象。update_layout 方法用于更新图表的布局属性。
  • width=1200:这是图表的宽度,单位是像素。设置为 1200 表示图表的宽度为 1200 像素。
  • height=900:这是图表的高度,单位是像素。设置为 900 表示图表的高度为 900 像素。
更新的图表

本文作者:徐可


现在:


长按扫码关注:科研生信充电宝


10元赞赏本文,即喜欢作者~


即可直接解锁:


《跟着高分SCI学画图:GPT教你绘制旭日图》对应资源哦~


看到这里你还不心动吗?


赶紧关注、转发、点赞、分享,领取你的专属福利吧~



好啦,以上就是今天推文的全部内容啦!


版权声明:本文内容由互联网用户自发贡献,版权归作者所有,本公众号不拥有所有权,也不承担相关法律责任。

如果您发现本公众号中有涉嫌抄袭的内容,欢迎发送邮件至:kysxcdb@163.com 进行举报,一经查实,本公众号将立刻删除涉嫌侵权内容。


科研生信充电宝
介绍科研;介绍统计;介绍生信;
 最新文章