使用 Python 创建美观且交互式的和弦图

原创
2020/11/18 08:20
阅读数 114

数据可视化几乎总是从事数据科学工作的必备能力。关于制作数据可视化,我已经分享了多篇文章了,可以查看上述「可视化话题」

今天给大家分享一款比较有意思的图形:和弦图(chord Diagram),它是一种显示矩阵中数据间相互关系的可视化方法,节点数据沿圆周径向排列,在探索实体组之间的关系中应用比较广泛!

如何用最少的努力创建一个美丽的和弦图?今天我手把手教大家:

  • 安装
  • 数据准备
  • 创建和弦图
  • 个性化定制

安装

假设 Pandas 已经安装, 你只需要安装和弦包 pypi 即可使用。

pip install chord

数据准备

我使用的是波士顿房价数据集,数据可以「文末下载」。下面进行数据处理:

# importing Pandas libary
import pandas as pd
# reading data from csv
df = pd.read_csv("housing.csv")

我的目标是可视化数据集中要素之间的相关性。因此,为了简洁起见,我将删除几列。我将只剩下6个功能

# List of columns to delete and then dropping them.
delete = ['ZN''INDUS''CHAS''DIS','RAD','B','LSTAT','PIRATIO']
df.drop(delete, axis=1, inplace=True)
print(df[:3])

现在,让我们使用 Pandas 的 corr() 函数创建相关矩阵。

# Now, matrix contains a 6x6 matrix of the values.
matrix = df.corr()
# Replacing negative values with 0’s, as features can be negatively correlated.
matrix[matrix < 0] = 0
# Multiplying all values by 100 for clarity, since correlation values lie b/w 0 and 1.
matrix = matrix.multiply(100).astype(int)
# Converting the DataFrame to a 2D List, as it is the required input format.
matrix = matrix.values.tolist()

这些数据现在非常适合我们的绘图!

创建和弦图

在绘图之前,剩下的唯一步骤是将实体的名称存储为列表。功能命名如下:

# Names of the features.
names = ["Crime Rate","N-Oxide","Number of rooms","Older buildings","Property Tax","Median Price"]

现在,我们所有需要做的就是导入包,图形输出在 「temp.html」

from chord import Chord
Chord(matrix, names).show()

图像为

和弦图导出为 HTML

Chord(matrix, names).to_html()

可以在浏览器中打开 HTML 以查找相同的交互式和弦图,也可以在代码编辑器中打开 .html 并自定义页面的其余部分!这是我的输出:

样式和自定义

Chord 可以通过从 d3 分类调色板中传递任何颜色来更改和弦图的颜色,它的样式有很多,颜色也非常惊艳,喜欢的可以动手尝试一下。

#第一种
Chord(matrix, names, colors="d3.schemeDark2").to_html('temp.html')
Chord(matrix, names, colors="d3.schemeAccent").to_html('temp.html')
# 第二种
coloursList = ["#f50057""#2196f3""#00e676""#ff5722""#00000""#ff9100"]
# 第三种
Chord(matrix, names, colors=coloursList).to_html('temp.html')

效果展示

另外,再送大家一份《简明Python教程》

本书旨在于介绍如何使用 Python 语言进行编程的自由图书。它以教材与指南的形式为入门者介绍 Python 语言。

一句话介绍:Python 初学者的极佳教材。

在线手册:

https://wizardforcel.gitbooks.io/a-byte-of-python/content/




书籍短评


我所遇见的最好的事就是发现了《简明 Python 教程》,它确实是一本为新手准备的绝佳书籍。它撰写出色,清楚解释了诸多定义,并都配以了清晰的案例。 -- Joshua Robin


这本书是我所见过的最好的新手教程!感谢你所做的努力。 ——Walt Michalik


我本应开始我实际的“工作”,但我却恰巧发现了这本《简明 Python 教程》。一本附有优秀例子的杰出教材。 -- Biologist John


按照下面的步骤领取电子书吧

领取方式:


长按扫码,发消息 [python]


长按扫码关注


回复发消息 python

(注意:限 1 天内免费!)

本文分享自微信公众号 - Python学习与数据挖掘(Python_CaiNiao)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部