关系(三)利用python绘制相关矩阵图

本文介绍了如何使用Python的seaborn库快速绘制相关矩阵图,包括基础用法、自定义参数以及利用matplotlib进行更灵活的定制。通过seaborn的pairplot和PairGrid展示了不同类型的可视化效果。
摘要由CSDN通过智能技术生成

关系(三)利用python绘制相关矩阵图

相关矩阵图(Correlogram)简介

1

相关矩阵图既可以分析每对变量之间的相关性,也可以分析单变量的分布情况。相关性以散点图的形式可视化,对角线用直方图/密度图表示每个变量的分布。

快速绘制

  1. 基于seaborn

    import seaborn as sns
    import matplotlib.pyplot as plt
    
    # 导入数据
    df = sns.load_dataset('iris')
    
    # 利用pairplot函数绘制相关矩阵图
    sns.pairplot(df)
    
    plt.show()
    

    2

  2. 基于matplotlib

    import matplotlib.pyplot as plt
    
    # 导入数据
    df = sns.load_dataset('iris')
    
    # 定义基本变量
    COLUMNS = ["sepal_length", "sepal_width", "petal_length", "petal_width"]
    COLORS = ["#386cb0", "#fdb462", "#7fc97f"]
    SPECIES = ["setosa", "versicolor", "virginica"]
    
    # 初始化布局4*4
    fig, axes = plt.subplots(4, 4, figsize = (12, 8), sharex="col", tight_layout=True)
    
    for i in range(len(COLUMNS)):
        for j in range(len(COLUMNS)):
            # 下三角添加散点图
            if i > j:
                for species, color in zip(SPECIES, COLORS):
                    data = df[df["species"] == species]
                    axes[i, j].scatter(COLUMNS[j], COLUMNS[i], color=color, alpha=0.5, data=data)
                    
            # 对角线添加直方图
            if i == j:
                for species, color in zip(SPECIES, COLORS):
                    data = df[df["species"] == species]
                    axes[i, j].hist(COLUMNS[j], bins=15, alpha=0.5, data=data)
            
            # 上三角剔除边框
            if i < j:
                axes[i, j].remove()
                
    plt.show()
    

    3

定制多样化的相关矩阵图

自定义相关矩阵图一般是结合使用场景对相关参数进行修改,并辅以其他的绘图知识。参数信息可以通过官网进行查看,其他的绘图知识则更多来源于实战经验,大家不妨将接下来的绘图作为一种学习经验,以便于日后总结。

seaborn主要利用pairplot绘制相关矩阵图,可以通过seaborn.pairplot了解更多用法

import seaborn as sns
import matplotlib.pyplot as plt

# 导入数据
df = sns.load_dataset('iris')

# 自定义参数
sns.pairplot(df, kind="scatter",  # 散点图,不带拟合线
                 hue="species",   # 对species进行分组(不同颜色)
                 plot_kws=dict(s=80, edgecolor="white", linewidth=2.5) # 自定义绘制参数
        )
plt.show()

4

也可以利用PairGrid自定义更为灵活的相关矩阵图,可以通过seaborn.pairplot了解更多用法

import seaborn as sns
import matplotlib.pyplot as plt

# 导入数据
df = sns.load_dataset('iris')

g = sns.PairGrid(df, diag_sharey=False)
# 上三角散点图
g.map_upper(sns.scatterplot)
# 下三角密度图
g.map_lower(sns.kdeplot)
# 对角线密度图
g.map_diag(sns.kdeplot)

plt.show()

5

总结

以上通过seaborn的pairplot快速绘制相关矩阵图,也可以利用matplotlib自定义绘制相关矩阵图。并通过修改参数或者辅以其他绘图知识自定义各种各样的相关矩阵图来适应相关使用场景。

共勉~

  • 14
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Python中,可以使用NetworkX库来绘制网络,并利用可达矩阵的概念来构建和可视化网络。 首先,导入NetworkX库和matplotlib库(用于可视化): ```python import networkx as nx import matplotlib.pyplot as plt ``` 然后,利用可达矩阵的数据构建网络。可达矩阵记录了每个节点之间的可达性关系,通常用0和1表示。我们可以使用二维列表或NumPy数组来表示可达矩阵。 下面是一个构建网络的示例: ```python # 定义节点标签 labels = [1, 2, 3, 4] # 定义可达矩阵 matrix = [ [0, 1, 1, 0], [1, 0, 1, 1], [1, 1, 0, 0], [0, 1, 0, 0] ] # 创建Graph对象 G = nx.Graph() # 添加节点和边 for i in labels: G.add_node(i) for i in range(len(matrix)): for j in range(i+1, len(matrix[i])): if matrix[i][j] == 1: G.add_edge(labels[i], labels[j]) # 绘制网络 nx.draw(G, with_labels=True) plt.show() ``` 在上面的示例中,我们使用了一个4个节点的网络,节点标签为1、2、3和4。可达矩阵中的元素表示节点之间的可达关系。根据可达矩阵构建网络后,使用`draw`函数进行绘制,并设置`with_labels`参数为`True`以显示节点的标签。 运行上述代码后,将会在Python中显示网络。 ### 回答2: 使用Python绘制网络可以使用可达矩阵来描述网络中节点的连通性。下面是利用可达矩阵在Python绘制网络的步骤: 1. 引入相关库:首先导入需要使用的库,包括`numpy`、`matplotlib`和`networkx`。 ```python import numpy as np import matplotlib.pyplot as plt import networkx as nx ``` 2. 创建可达矩阵:定义网络中节点之间的连接关系,构建可达矩阵。可达矩阵是一个二维数组,表示节点之间的连通性。 ```python reachable_matrix = np.array([[0, 1, 1, 0], [0, 0, 1, 0], [0, 0, 0, 1], [1, 0, 0, 0]]) ``` 3. 创建有向对象:使用可达矩阵创建有向对象。 ```python G = nx.from_numpy_matrix(reachable_matrix, create_using=nx.DiGraph) ``` 4. 绘制网络利用`networkx`库和`matplotlib`库的绘函数将有向可视化。 ```python nx.draw(G, with_labels=True, node_color='lightblue', node_size=800, font_size=12, edge_color='gray') plt.show() ``` 绘制网络的结果将在形界面中显示,其中节点之间的连线表示节点的连通关系,节点标签可以显示节点名称。你也可以根据自己的需要调整形的样式。 以上是利用可达矩阵在Python绘制网络的基本步骤,你可以根据具体需求对代码进行修改和扩展。 ### 回答3: 在Python中,可以使用networkx库来绘制网络,并通过可达矩阵来描述网络中节点之间的连接关系。下面是如何利用可达矩阵在Python绘制网络的步骤: 1. 首先,导入必要的库,包括networkx和matplotlib: ```python import networkx as nx import matplotlib.pyplot as plt ``` 2. 创建一个可达矩阵,用于描述节点之间的连接关系。可达矩阵是一个二维数组,其中的元素表示节点之间的连接情况。如果节点i和节点j之间存在连接,则可达矩阵中的第i行第j列元素为1,否则为0。例如,以下可达矩阵描述了一个3个节点的网络: ```python reachable_matrix = [[0, 1, 1], [1, 0, 0], [1, 0, 0]] ``` 3. 创建一个空的有向: ```python G = nx.DiGraph() ``` 4. 遍历可达矩阵,对每对连接的节点添加一条边到有向中: ```python for i in range(len(reachable_matrix)): for j in range(len(reachable_matrix)): if reachable_matrix[i][j] == 1: G.add_edge(i, j) ``` 5. 使用matplotlib库绘制网络: ```python nx.draw(G, with_labels=True) plt.show() ``` 以上步骤将可达矩阵中的节点和连接关系转换为一个有向,并使用matplotlib绘制出网络。 注意:可达矩阵必须是方阵,并且节点的编号从0开始连续递增。如果想要绘制无向,可以使用nx.Graph()代替nx.DiGraph(),并在遍历可达矩阵时只添加一次边。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值