绘制一个奇特的对角相关矩阵,其系数位于上三角形中

2023-11-23

我有以下内容合成的数据框,包括数值 and 绝对的列以及label柱子。 我想绘制一个对角相关矩阵并在上部显示相关系数,如下所示:

预期产出:

img

尽管合成数据集/数据帧中的分类列df需要转换成数值,到目前为止我已经用过这个海伯恩的例子 using 'titanic'数据集是合成的并且适合我的任务,但我添加了label栏目如下:

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

sns.set_theme(style="white")

# Generate a large random dataset with synthetic nature (categorical + numerical)
data = sns.load_dataset("titanic")
df = pd.DataFrame(data=data)

# Generate label column randomly '0' or '1'
df['label'] = np.random.randint(0,2, size=len(df))

# Compute the correlation matrix
corr = df.corr()

# Generate a mask for the upper triangle
mask = np.triu(np.ones_like(corr, dtype=bool))

# Set up the matplotlib figure
f, ax = plt.subplots(figsize=(11, 9))

# Generate a custom diverging colormap
cmap = sns.diverging_palette(230, 20, as_cmap=True)

# Draw the heatmap with the mask and correct aspect ratio
sns.heatmap(corr, mask=mask, cmap=cmap, vmin=-1.0, vmax=1.0, center=0,
            square=True, linewidths=.5, cbar_kws={"shrink": .5})

img

我查了相关的post但无法弄清楚如何完成这项任务。到目前为止我能找到的最好的就是这个解决方法可以使用此软件包安装它,它给我以下输出:

#!pip install heatmapz
# Import the two methods from heatmap library
from heatmap import heatmap, corrplot
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

sns.set_theme(style="white")

# Generate a large random dataset
data = sns.load_dataset("titanic")
df = pd.DataFrame(data=data)

# Generate label column randomly '0' or '1'
df['label'] = np.random.randint(0,2, size=len(df))

# Compute the correlation matrix
corr = df.corr()

# Generate a mask for the upper triangle
mask = np.triu(np.ones_like(corr, dtype=bool)) 
mask[np.diag_indices_from(mask)] = False
np.fill_diagonal(mask, True)

# Set up the matplotlib figure
plt.figure(figsize=(8, 8))

# Draw the heatmap using "Heatmapz" package
corrplot(corr[mask], size_scale=300)

img

Sadly, corr[mask]不会遮盖此包中的上三角形。

我还注意到,在 R 中,达到这个奇特的情节要容易得多,所以如果有更直接的方法,我很乐意将 Python Pandas 数据帧转换为 R 数据帧因为似乎有一个包,所谓的rpy2即使在 Google Colab 笔记本中,我们也可以一起使用 Python 和 R:Ref.1

from rpy2.robjects import pandas2ri
pandas2ri.activate() 

所以如果是这样的话,我发现这个post1 & post2使用 R 来实现相关矩阵的可视化。 所以,简而言之,我的首要任务是使用 Python 及其包Matplotlib, seaborn, Plotly Express,然后 R 及其包达到预期输出。

Note

我在谷歌给你提供了可执行代码带 R 的 Colab 笔记本 using dataset这样您就可以形成/测试您的最终答案(如果您的解决方案是)rpy2否则我会对 Pythonic 解决方案感兴趣。


我不是 rpy2 方面的专家,所以我无法提供帮助,但这是我在 R 中构建它的方法。由于我没有你的数据,我不能保证一切都会完美地适合你数据集,但这里是一个总体轮廓:

library(tidyverse)

#get some data
df <- as_tibble(mtcars) |>
  (\(d) select(d, order(colnames(d))))()
  
#calculate correlation matrix
cor_mat <- cor(df) 

#make 2 "blank" matrices
low <- matrix(NA, nrow = nrow(cor_mat), ncol = ncol(cor_mat))
up <- matrix(NA, nrow = nrow(cor_mat), ncol = ncol(cor_mat))

#populate upper and lower matrices
up[upper.tri(up)] <- cor_mat[upper.tri(cor_mat)]
low[lower.tri(low)] <- cor_mat[lower.tri(cor_mat)]


#pivot upper and lower for plotting
lower_dat <- low|>
  as.data.frame() |>
  `colnames<-`(colnames(df)) |>
  mutate(xvar = colnames(df)) |>
  pivot_longer(cols = -xvar, names_to = "yvar") 

upper_dat <- up|>
  as.data.frame() |>
  `colnames<-`(colnames(df)) |>
  mutate(xvar = colnames(df)) |>
  pivot_longer(cols = -xvar, names_to = "yvar") 


#plot
lower_dat|> #lower matrix data
  ggplot(aes((xvar), yvar))+ 
  geom_tile(fill = NA, color = "grey")+ #background grid
  geom_point(aes(fill = value, size = value), pch = 22)+ # differnt sized points
  geom_text(data = upper_dat, aes(color = value, label = round(value, 2)))+ #plot cor in upper right
  scale_size_continuous(breaks = seq(-1, 1, by = 0.5))+ # define size breaks
  labs(x = "", y = "")+ #remove unnecessary labels
  scale_fill_gradient2(low = "darkred",mid = "white", high = "darkblue", midpoint = 0)+ #define square colors
  scale_color_gradient2(low = "darkred",mid = "white", high = "darkblue", midpoint = 0)+ #define text colors
  scale_x_discrete(limits = rev)+# rev to make the triagle a certain side
   #make it look pretty
  theme(panel.background = element_blank(), 
        panel.border = element_rect(fill = NA, color = "black"),
        axis.text = element_text(color = "black", size = 10),
        axis.title = element_text(size = 12))

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

绘制一个奇特的对角相关矩阵,其系数位于上三角形中 的相关文章

  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • 如何从网页中嵌入的 Tableau 图表中抓取工具提示值

    我试图弄清楚是否有一种方法以及如何使用 python 从网页中的 Tableau 嵌入图形中抓取工具提示值 以下是当用户将鼠标悬停在条形上时带有工具提示的图表示例 我从要从中抓取的原始网页中获取了此网址 https covid19 colo
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • 删除极坐标图边缘的多余空间和圆环

    我有一个极坐标图ggplot2我已经非常接近完成 相当简单的情节 我已经能够在删除矩形边框方面获得帮助 但我不需要删除最后一个范围轮廓与带有方位角标签的绘图周围的环之间的额外空间 我希望该图的边界为 15 000 而不是 15 214 我编
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 绘制方程

    我正在尝试创建一个函数 它将绘制我告诉它的任何公式 import numpy as np import matplotlib pyplot as plt def graph formula x range x np array x rang
  • SPSS 中的标准化残差与 R rstandard(lm()) 不匹配

    在寻找 R 相关解决方案时 我发现 R 和 SPSS 版本 24 在计算简单线性模型中的标准化残差方面存在一些不一致 看来SPSS所谓的标准化残差匹配 R学生化残差 我完全不认为某处存在软件错误 但显然这两个程序之间存在差异 看看这个例子
  • applyStrategy 错误

    我是R新手 最近运行后遇到以下错误applyStrategy函数来自quantstrat包裹 Error in eval expr envir enclos object signal not found Error in colnames
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • Pandas:merge_asof() 对多行求和/不重复

    我正在处理两个数据集 每个数据集具有不同的关联日期 我想合并它们 但因为日期不完全匹配 我相信merge asof 是最好的方法 然而 有两件事发生merge asof 不理想的 数字重复 数字丢失 以下代码是一个示例 df a pd Da
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • Fabric env.roledefs 未按预期运行

    On the 面料网站 http docs fabfile org en 1 10 usage execution html 给出这个例子 from fabric api import env env roledefs web hosts
  • 对年龄列进行分组/分类

    我有一个数据框说df有一个柱子 Ages gt gt gt df Age 0 22 1 38 2 26 3 35 4 35 5 1 6 54 我想对这个年龄段进行分组并创建一个像这样的新专栏 If age gt 0 age lt 2 the
  • 如何在 Python 中追加到 JSON 文件?

    我有一个 JSON 文件 其中包含 67790 1 kwh 319 4 现在我创建一个字典a dict我需要将其附加到 JSON 文件中 我尝试了这段代码 with open DATA FILENAME a as f json obj js
  • 有没有办法检测正在运行的代码是否正在上下文管理器内执行?

    正如标题所述 有没有办法做到这样的事情 def call back if called inside context print running in context else print called outside context 这将
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201
  • 麦当劳 omega:R 中的警告

    我正在计算几种不同尺度的欧米茄 并在 R 中使用不同的 omega 函数获取不同比例的不同警告消息 我的问题是如何解释这些警告以及报告检索到的 omega 统计数据是否安全 当我使用 从 alpha 到 omega 内部一致性估计普遍问题的
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • Rocket UniData/UniVerse:ODBC 无法分配足够的内存

    每当我尝试使用pyodbc连接到 Rocket UniData UniVerse 数据时我不断遇到错误 pyodbc Error 00000 00000 Rocket U2 U2ODBC 0302810 Unable to allocate

随机推荐

  • React:如何在 onBeforeInput 处理程序中使用 event.data 而不会出现 TypeScript 错误

    所以事件接收者onBeforeInput处理程序的类型为React FormEvent
  • key 在 ReactJs 的子组件中不能用作 prop

    我有一个父组件 其中下面的组件正在动态生成map功能如下 const renderListing this props listing map function list index return
  • 退出状态是可观察的行为吗?

    C 2018 5 1 2 3 6 说 一致实施的最低要求是 对易失性对象的访问严格按照抽象机的规则进行评估 在程序终止时 写入文件的所有数据应与根据抽象语义执行程序所产生的结果相同 交互设备的输入和输出动态应按照 7 21 3 的规定进行
  • 南希:如何捕获所有请求,无论动词或路径如何

    我想将 Nancy 与默认路由一起使用 因为它干净且运行良好 但是我想要一个选项来将所有传入请求记录到控制台 我正在使用 Nancy 的自托管模块 无论是否存在显式路由 简而言之 我希望能够捕获动词 传入请求 URI 任何发布的数据 如果是
  • ModuleNotFoundError:没有名为“pandas.core.indexes”的模块

    我编写了这段代码来将数据集加载到数据框中 数据集在 pickle 文件中给出 但会引发错误 ModuleNotFoundError 没有名为 pandas core indexes 的模块 import pickle import pand
  • 如何从 ASP .NET Core MVC 1.0 中的视图访问会话

    我正在尝试从视图内部访问会话数据 使用案例 我将状态消息存储在会话中 该消息将显示在页面顶部 目前我通过使用DisplayMessages 设置一些函数ViewData 属性并在每个控制器操作开始时调用它 Goal 我只想设置一次状态消息
  • 如何从 Java 向 Erlang 发送消息?

    我正在 Erlang 中制作一个应用程序 并使用 Java 中的 GUI 我已经成功地在两种语言之间建立了连接 但现在我需要 我猜 每次按下按钮时从 Java 向 Erlang 发送一条消息 这是正确的做法吗 这样的消息看起来怎么样 我发现
  • #includes 在命名空间中,将预先编写的内容“嵌入”命名空间中

    简而言之 这样做安全吗 namespace Foo include bar 在你愉快地拒绝之前 我想我有一些规则可以保证它相当安全 但我不喜欢它们 因为它们要求包含器单独包含所需的所有全局范围标头 尽管这可能是可以容忍的 但如果我们想象包含
  • 是什么导致 Java JLabel 图标图像质量差?

    Java JLabel图标显示的像素扭曲JFrame 不同的 png 图像 均为 32x32 都会出现这种情况 我没有缩放图像 它们在程序中显示为 32x32 我使用它进行了验证getWidth and getHeight在 JLabel
  • 如何在列表理解中转换这个 for 循环?

    我有一个像这样的 for 循环 for i in conversion for f in glob glob i print os path getsize f 我想将其转换为列表理解 尝试过这个 os path getsize f for
  • 从某个范围生成随机整数

    我需要一个函数 它可以生成给定范围 包括边界值 内的随机整数 我没有不合理的质量 随机性要求 我有四个要求 我需要它快点 我的项目需要生成数百万 有时甚至数千万 的随机数 而我当前的生成器函数已被证明是一个瓶颈 我需要它相当均匀 使用 ra
  • 获取对象的实例名称,而不是 C# 4.0 中的对象类型名称

    假设这个类型 public class Car 我创建了一个实例 Car myCar new Car Target target new Target target Model myCar 这是另一种类型 public class Targ
  • C# python 实时进程间

    我正在开发一个项目 其中一个应用程序使用 C 编写 另一个应用程序使用 Python 编写 C 应用程序将持续分析数据流 并在每次检测到有趣的内容时发出一个标志 因此 每次发生事件时 我的 Python 应用程序都必须读取它并继续其自己的进
  • 包含 espresso-contrib:2.0 时出现 java.lang.InknownClassChangeError

    我有 android support v7 widget RecyclerView 的子类 当我使用该应用程序并进行测试时 它工作得很好 但是 当我在 gradle 应用程序文件中包含 espresso contrib 时 当我尝试运行相同
  • 自定义 Visual Studio MSIX 打包项目输出

    我正在使用 Visual Studio MSIX 打包项目在网络共享上为内部应用程序创建安装程序 一个问题是它正在创建一个末尾带有 Test 的目录 为什么会这样以及我该如何摆脱它 我只想要 MyApp MSIX 0 0 1 0 或者理想情
  • 在 matlab 中保存 imagesc 的精确图像输出

    你好 我想保存这张图片imagesc magic 3 确切的彩虹表示 可能吗 Thanks 这个问题可能看起来像重复的问题 但事实并非如此 我在这个网站上查看了类似问题的解决方案 但它并不令我满意 我查看了 Matlab 帮助中心 得到的最
  • android ffmpeg .so下载[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 有人知道从哪里获得 Android 编译的 so FFMPEG 库吗 我尝试了数千次使用 Android NDK 在 windows 7 上手动编译
  • 接受 YouTube 的 cookie 同意

    我正在尝试从 Youtube 频道检索 Youtube 视频列表 例如 https www youtube com user YouTube videos 以获得第 n 个第一个视频 感谢key videoId 它曾经像魅力一样发挥作用 直
  • Oracle中的游标for循环

    请解释一下如何在 oracle 中使用游标 for 循环 如果我使用下一个代码 一切都很好 for rec in select id name from students loop do anything end loop 但是如果我为这个
  • 绘制一个奇特的对角相关矩阵,其系数位于上三角形中

    我有以下内容合成的数据框 包括数值 and 绝对的列以及label柱子 我想绘制一个对角相关矩阵并在上部显示相关系数 如下所示 预期产出 尽管合成数据集 数据帧中的分类列df需要转换成数值 到目前为止我已经用过这个海伯恩的例子 using