分布(二)利用python绘制密度图

news2024/10/7 16:27:28

分布(二)利用python绘制密度图

密度图 (Density chart)简介

1

密度图用于显示数据在连续数值(或时间段)的分布状况,是直方图的变种。由于密度图不受所使用分组数量的影响,所以能更好地界定分布形状。

快速绘制

  1. 基于seaborn(建议)

    import seaborn as sns
    import matplotlib.pyplot as plt
    
    # 导入数据
    df = sns.load_dataset('iris')
    
    # 利用kdeplot函数绘制密度图
    sns.kdeplot(df['sepal_width'])
    
    plt.show()
    

    2

  2. 基于matplotlib

    import matplotlib.pyplot as plt
    import numpy as np
    from scipy.stats import gaussian_kde
    
    # 导入数据
    df = sns.load_dataset('iris')
    
    # 根据数据集构建密度函数
    density = gaussian_kde(df['sepal_width'])
    density.covariance_factor = lambda : .25
    density._compute_covariance()
    
    # 构造向量 作为x轴刻度
    xs = np.linspace(1.5, 5, 200)
    
    # 初始化
    plt.figure(figsize=(8, 6))
    
    plt.plot(xs,density(xs))
    plt.show()
    

    3

定制多样化的密度图

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

seaborn主要利用kdeplot绘制密度图,可以通过seaborn.kdeplot了解更多用法

  1. 修改参数

    import seaborn as sns
    import matplotlib.pyplot as plt
    
    sns.set(font='SimHei', font_scale=0.8, style="darkgrid") # 解决Seaborn中文显示问题
    
    
    # 导入数据
    df = sns.load_dataset("iris")
    
    # 构造子图
    fig, ax = plt.subplots(1,3,constrained_layout=True, figsize=(12, 4))
    
    # 水平密度图
    ax_sub = sns.kdeplot(y=df['sepal_width'], fill=True, color="skyblue", ax=ax[0])
    ax_sub.set_title('水平密度图')
    
    # 增加阴影
    ax_sub = sns.kdeplot(df['sepal_width'], fill=True, ax=ax[1])
    ax_sub.set_title('增加阴影')
    
    # 修改带宽,以突出数据分布的原始状态(避免过于平滑)
    ax_sub = sns.kdeplot(df['sepal_width'], fill=True, bw_method=0.1, ax=ax[2])
    ax_sub.set_title('降低带宽')
    
    
    plt.show()
    

    4

  2. 一图绘制多个变量

    import seaborn as sns
    import matplotlib.pyplot as plt
    df = sns.load_dataset('iris')
    
    sns.kdeplot(df['sepal_width'], fill=True, color="r", label='sepal_width')
    sns.kdeplot(df['sepal_length'], fill=True, color="b", label='sepal_length')
    plt.legend() 
    plt.xlabel('sepal_width/sepal_length') # 修改x标签
    
    plt.show()
    

    5

    # 引申-镜像密度图:可用来对比两个变量的分布
    
    import numpy as np
    from numpy import linspace
    import pandas as pd
    import seaborn as sns
    import matplotlib.pyplot as plt
    from scipy.stats import gaussian_kde
    
    # 自定义数据
    df = pd.DataFrame({
    'var1': np.random.normal(size=1000),
    'var2': np.random.normal(loc=2, size=1000) * -1
    })
    
    # 初始化
    plt.rcParams["figure.figsize"]=12,8
    
    # 绘制密度图1
    sns.kdeplot(data=df, x="var1",  fill=True, alpha=1)
    
    # 绘制密度图2
    kde = gaussian_kde(df.var2)
    x_range = linspace(min(df.var2), max(df.var2), len(df.var2))
    
    # 乘以-1进行反转(绘制镜像图)
    sns.lineplot(x=x_range*-1, y=kde(x_range) * -1, color='orange') 
    plt.fill_between(x_range*-1, kde(x_range) * -1, color='orange')
    
    # 轴名称   
    plt.xlabel("numbers")
    plt.axhline(y=0, linestyle='-',linewidth=1, color='black')
    
    
    plt.show()
    

    6

  3. 分组密度图

    import seaborn as sns
    import matplotlib.pyplot as plt
    
    # 导入数据
    from plotnine.data import diamonds # dataset
    
    # alpha:修改透明度
    sns.kdeplot(data=diamonds, x="price", hue="cut", fill=True, common_norm=False, alpha=0.4)
    
    plt.show()
    

    7

    # 利用FacetGrid以多网格展示
    
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    # 导入数据
    diamonds = sns.load_dataset('diamonds')
    
    # 绘制网格(共用坐标轴)
    g = sns.FacetGrid(diamonds, col='cut', hue='cut', col_wrap=3)
    # 绘制密度图
    g = g.map(sns.kdeplot,"price", cut=0, fill=True, common_norm=False, alpha=1, legend=False)
    # 每个网格的标题
    g = g.set_titles("{col_name}")
    
    plt.show()
    

    8

  4. 引申-绘制堆积图

    import seaborn as sns
    import matplotlib.pyplot as plt
    
    # 导入数据
    diamonds = sns.load_dataset('diamonds')
    
    # 绘制堆积图
    sns.kdeplot(data=diamonds, x="price", hue="cut", common_norm=False, multiple="fill", alpha=1)
    
    plt.show()
    

    9

总结

以上通过seaborn的kdeplot可以快速绘制密度图,也可通过gaussian_kde构建密度函数后再通过matplotlib进行简单绘制,并通过修改参数或者辅以其他绘图知识自定义各种各样的密度图来适应相关使用场景。

共勉~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1456199.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

每日一练:LeeCode-501、二叉搜索树中的众数【二叉搜索树+pre辅助节点+DFS】

本文是力扣LeeCode-LeeCode-501、二叉搜索树中的众数【二叉搜索树pre辅助节点DFS】 学习与理解过程,本文仅做学习之用,对本题感兴趣的小伙伴可以出门左拐LeeCode。 给你一个含重复值的二叉搜索树(BST)的根节点 root ,…

【大模型 向量库】从向量搜索到向量数据库

大模型向量库 向量:AI核心向量库:语义近似搜索大模型 向量库YOLO 向量数据库嵌入(Embedding)设计最近邻搜索近似近邻搜索 向量:AI核心 向量伴随着 AI 模型的发展而发展。 向量:AI 理解世界的通用数据形…

C 语言 devc++ 使用 winsock 实现 windows UDP 利用 IP 进行局域网发送消息

UDP 通信流程_udp通信过程-CSDN博客参考来源 UDP 通信流程_udp通信过程-CSDN博客 这里移植到windows 上 &#xff0c;使用 devc 开发。 服务端代码 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <…

【Vitis】Vitis性能优化的开源库

Vitis HLS简介 Vitis™HLS是一种高层次综合工具&#xff0c;支持将C、C和OpenCL™函数硬连线到器件逻辑互连结构和RAM/DSP块上。 Vitis HLS可在Vitis应用加速开发流程中实现硬件内核&#xff0c;并使用C/C语言代码在VivadoDesign Suite中为赛灵思器件设计开发RTL IP。 【Vitis…

springboot单体项目快速生成代码

生成的是这些代码&#xff1a;controller,entity,mapper,service,service里面的impl,还有xml import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.core.toolk…

SQL笔记-多表查询(合并记录新增字段)

比如要统计2张表的所有数据,这两张表无关联关系,统计的数据需要在同一行: SELECT (SELECT COUNT(*) FROM reptile_csdn_article) AS table1_count, (SELECT COUNT(*) FROM reptile_tag_type) AS table2_count 运行截图如下: 大于2张表按上面的格式进行修改即可。 下面也是…

满效--深圳亚太口腔医学高新技术博览

哈尔滨市夔沣生物科技有限公司丨SDHE 2023深圳亚太口腔医学高新技术博览会感恩有您&#xff01; 2024再相聚 深圳亚太口腔展 2023年12月6-8日&#xff0c;为期三天的“深圳亚太口腔医学高新技术博览会”在中国深圳&#xff0c;圆满落下帷幕。 哈尔滨市夔沣生物科技有限公司出品…

高效的FTP替代产品,如何解决FTP文件传输存在的弊端?

FTP最初并不是为IP网络设计的&#xff0c;而是在ARPANET&#xff08;Advanced Research Projects Agency Network&#xff0c;美国国防部高级研究计划署网络&#xff09;中作为计算机间文件传输的协议。1971年&#xff0c;Abhay Bhushan提出了FTP的第一个RFC&#xff08;Reques…

【深度优先】【广度优先】Leetcode 104 二叉树的最大深度 Leetcode 111 二叉树的最小深度 Leetcode 110 平衡二叉树

【深度优先】【广度优先】Leetcode 104 二叉树的最大深度 Leetcode 111 二叉树的最小深度 Leetcode 110 平衡二叉树 Leetcode 104 二叉树的最大深度解法1 深度优先 递归法 后序&#xff1a;左右中解法2 广度优先&#xff1a;层序遍历 Leetcode 111 二叉树的最小深度解法1 深度…

Codeforces Round 924 (Div. 2)题解(A-D)

A - Rectangle Cutting 链接&#xff1a;A - Rectangle Cutting 思路 考虑横边和纵边&#xff0c;若为偶数&#xff0c;则从中间分开&#xff0c;重新组合为一个长方形&#xff0c;检测是否与原来的长方形一致。 代码 #include <bits/stdc.h> using namespace std;i…

湖南建研工程质量检测系统/Scripts/admintool文件上传漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

2.C语言——输入输出

1.字符输入输出函数 1.输入:getchar() 字面意思&#xff0c;接收单个字符&#xff0c;使用方法 char a; a getchar();实际上效果等同于char a; scanf("%c",&a);2.输出:putchar() 2.格式化输入输出函数 1.输入:scanf() 格式&#xff1a; scanf(“格式控制…

lvs DR模式+基于五台服务器部署keepalived + lvs DR模式架构(前端带路由)负载均衡的高可用集群

lvs DR模式基于五台服务器部署keepalived lvs DR模式架构(前端带路由)负载均衡的高可用集群 DR模式一&#xff1a; 客户端&#xff1a;172.20.26.167 LVS服务器&#xff1a;172.20.26.198 后端服务器&#xff1a;172.20.26.218 后端服务器&#xff1a;172.20.26.210 两台…

day05-股票数据采集功能

股票数据采集 今日目标 1.掌握RestTemplate基本使用; 2.阅读并理解第三方股票接口API; 3.基于RestTemplate实现国内大盘数据采集功能; 3.1 项目集成RestTemplate; 3.2 理解基于正则解析响应数据原理; 3.3 掌握常用lambda stream流操作; 4.基于RestTemplate实现国内板块和股票…

浅析SPDK技术:vhost

文章目录 SPDK vhost工作机制SPDK vhost实现SPDK vhost设备管理结构vhost_dev_register&#xff1a;注册vhost设备new_connection&#xff1a;新建连接会话start_device&#xff1a;启动设备会话 SPDK vhost-blk实现rpc_vhost_create_blk_controller&#xff1a;创建vhost-blk设…

Feign 第一次调用为什么会很慢?

前言 首先要了解 Feign 是如何进行远程调用的&#xff0c;这里面包括&#xff0c;注册中心、负载均衡、FeignClient 之间的关系&#xff0c;微服务通过不论是 eureka、nacos 也好注册到服务端&#xff0c;Feign 是靠 Ribbon 做负载的&#xff0c;而 Ribbon 需要拿到注册中心的…

融智学应用场景实训实操文化基因系统工程实践指南讲座音频

俗话说&#xff0c;听君一席话胜读十年书。戴上耳机闭目倾听&#xff08;语言哲学和语言科学基础之上的融智学&#xff09;&#xff1a; “融智学应用场景实训实操文化基因系统工程实践指南讲座音频”&#xff08;一共七章&#xff09;随之便会发现&#xff0c;原来汉字汉语暨…

卫星热平衡试验与太阳光模拟器

卫星热模型是一种用于研究卫星的热特性的模型。卫星在太空中接收到的太阳辐射会导致其表面温度的变化&#xff0c;而表面温度的变化会影响卫星的热传导和热辐射&#xff0c;进而影响其冷却和热平衡。 卫星热模型一般涉及以下几个方面的内容&#xff1a; 1. 热辐射模型&#xf…

Midjourney风格一致功能解读及使用方法

Midjourneys再次迎来更新&#xff0c;本次新增“风格一致”功能&#xff01;用户期待已久的风格模仿功能终于实现了&#xff01; --sref 虽然目前只是测试功能&#xff0c;但已经相当强大了&#xff0c;这篇文章我将带大家先睹为快&#xff01; 别忘了&#xff0c;这个功能目前…

C语言第二十七弹---内存函数

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 内存函数 1、memcpy 使用和模拟实现 2、memmove 使用和模拟实现 3、memset 函数的使用 4、memcmp 函数的使用 总结 前面两弹讲解了字符函数和字符串函数&…