在模仿中精进数据可视化09:近期基金涨幅排行可视化

简介: 在模仿中精进数据可视化09:近期基金涨幅排行可视化

1 简介

最近几个月一是工作繁忙,二是将业余的注意力多数放在Dash系列教程的撰写上,因此费老师我已经很久很久很久没有更新过「在模仿中精进数据可视化」系列文章了😶,今天继续第9期~

我们今天要绘制的数据可视化作品,灵感来源于DT财经某篇文章的一幅插图,原图如下:

图1

这幅图其实可以说是柱状蝴蝶图的一种变种,用极坐标系代替平面坐标系,左上和右下彼此分离相对的半圆均以逆时针方向对数据排行进行带色彩映射的可视化,非常的美观,容易给人留下深刻的印象。

而今天的文章我们换个数据源,基于近3个月「股票型」以及「债券型」基金各自涨幅的前十名数据(数据来源东方财富网),来基于matplotlib使用同样的方式进行表达。

2 复刻过程

2.1 拆解主要视觉元素

其实这幅作品绘制起来主要的难度在于极坐标系下很多matplotlib涉及到的API都比较冷门,如果是对matplotlib不太熟悉的朋友可能会感觉无从下手。

按照惯例,我们先来拆解一下这幅图的主要构图元素:

  • 「分离的两部分半圆区域」

这幅作品中的主体区域当数左上及右下区域对应的两个半圆,它们之间是存在一定宽度的间隔,因此我们需要创建两个极坐标系子图,并调整位置,形成彼此相对的样子,我们可以先使用plt.subplots()开辟画布,再针对画布对应Figure对象执行add_axes()方法调整位置,插入polar=True的极坐标子图。

再配合set_xlim()set_ylim(),以及极坐标系子图专有的set_thetagrids()set_rgridsset_theta_offset()来完成限定圆形显示的角度范围、半径范围,自定义网格线以及修改旋转角度等作用,这一步后形成图2:

图2

  • 「利用fill_between()来映射数据」

接下来我们就需要将数据映射到极坐标系中,可以选择「柱状图」「面积填充」的方式进行绘制,我这里为了操作自由度更高,选择配合fill_between()来基于面积填充进行映射(调色盘方案基于palettable),因为是极坐标系,所以对应传入的参数变成了角度范围和半径序列,配合一些额外线条和白色填充后,效果如下:

图3

  • 「文字标注」

因为我们的基金数据中,基金的名称普遍较长,且我还希望标注出每个扇形区域对应的涨幅数额,因此我使用环绕型的文字标注方式,基于matplotlibtext()方法,结合每个扇形区域的对应角度范围,在循环过程中推导出标注文字的旋转角度,这一步后得到的效果如下:

图4

这一步需要注意的是,matplotlibtext()在旋转时,其针对水平和竖直方向对齐方式,在极坐标系中有些要注意的地方,我在上图中设置了参数rotation_mode='anchor',它帮助我们「先旋转文字,再对齐」,如果不加这个参数,会「先对齐再旋转」,得到的效果会很混乱:

图5

2.2 完成复刻

在上述拆解的基础上,加上一些对细节的补充,便得到下面的作品:

图6

相关文章
|
7月前
|
机器学习/深度学习 存储 SQL
15个超级棒的外文免费数据集,学习数据分析不愁没有数据用了!
15个超级棒的外文免费数据集,学习数据分析不愁没有数据用了!
230 0
|
自然语言处理 数据可视化 数据挖掘
【文末送书】AIGC时代的数据分析与可视化
【文末送书】AIGC时代的数据分析与可视化
241 0
【文末送书】AIGC时代的数据分析与可视化
|
4月前
|
数据采集 数据可视化 数据挖掘
【2021 年 MathorCup 高校数学建模挑战赛—赛道A二手车估价问题】1 数据分析及可视化
介绍了2021年MathorCup高校数学建模挑战赛赛道A的二手车估价问题,包括数据的读取、宏观查看、缺失值和异常值的检查、数据分布和相关性的分析,以及特征类别的统计,为建立二手车估价模型提供了数据预处理和分析的基础。
62 5
|
4月前
|
供应链 算法 数据挖掘
【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 23页论文及实现代码
本文介绍了2023年第十一届泰迪杯数据挖掘挑战赛B题的解决方案,深入分析了产品订单数据,并使用Arimax和Var模型进行了需求预测,旨在为企业供应链管理提供科学依据,论文共23页并包含实现代码。
163 0
【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 23页论文及实现代码
|
4月前
|
数据采集 人工智能 数据挖掘
【钉钉杯大学生大数据挑战赛】初赛B 航班数据分析与预测 Python代码实现Baseline
本文提供了参加"钉钉杯大学生大数据挑战赛"初赛B的航班数据分析与预测项目的Python代码实现Baseline。内容包括题目背景、思路分析、训练集和测试集的预处理、模型训练与预测、特征重要性分析,以及代码下载链接。预处理步骤涉及读取数据、时间信息处理、前序航班延误时间计算、天气信息匹配等。模型训练使用了Gradient Boosting Classifier,并对模型的准确率和特征重要性进行了评估。
94 0
|
6月前
|
数据采集 Web App开发 数据可视化
程序员必知:对厦门二手房的数据分析与可视化分析
程序员必知:对厦门二手房的数据分析与可视化分析
87 0
|
7月前
|
数据可视化 数据挖掘 网络可视化
R语言复杂网络分析各大电视台合播电视剧数量可视化
R语言复杂网络分析各大电视台合播电视剧数量可视化
|
7月前
|
数据可视化
数据分享|R语言因子分析、相关性分析大学生兼职现状调查问卷数据可视化报告(下)
数据分享|R语言因子分析、相关性分析大学生兼职现状调查问卷数据可视化报告
|
7月前
|
数据采集 数据可视化 数据挖掘
数据分享|R语言因子分析、相关性分析大学生兼职现状调查问卷数据可视化报告(上)
数据分享|R语言因子分析、相关性分析大学生兼职现状调查问卷数据可视化报告
|
7月前
|
监控 数据可视化 数据挖掘
数据可视化第二版-拓展-和鲸网约车分析一等奖作品
数据可视化第二版-拓展-和鲸网约车分析一等奖作品