Python中matplotlib绘制密度散点图的方法

2024-04-27 12:20

本文主要是介绍Python中matplotlib绘制密度散点图的方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  本文介绍基于Python语言的matplotlib模块,对Excel表格文件中的指定数据,加以密度散点图绘制的方法。

  首先,明确一下本文的需求。

  现有一个.csv格式的表格文件,其各列数据的开头部分如下图所示。其中,对于名称为26的这1列(左侧紫色框内数据),我们希望提取其数值等于1的所有行,并对这些行中的NIR_predict列与NIR_true列(右侧紫色框内数据)的数值加以密度散点图的绘制。

  明确了需求,即可开始代码的撰写。本文所用代码如下。

# -*- coding: utf-8 -*-
"""
Created on Mon Apr  1 12:14:38 2024@author: fkxxgis
"""import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import gaussian_kdecsv_file_path = r"E:\04_Reconstruction\99_MODIS\Train_Model_0715_Main_Combine.csv"
picture_file_path = r"E:\04_Reconstruction\99_MODIS\Scatter_result.png"data = pd.read_csv(csv_file_path)x = data[data["26"] == 1]['NIR_true']
y = data[data["26"] == 1]['NIR_predict']xy = np.vstack([x,y])
z = gaussian_kde(xy)(xy)
idx = z.argsort()
plt.scatter(x, y, c = z, s = 10, cmap = "Spectral")
plt.colorbar()plt.rc("font", family = "Times New Roman")
x_line = np.linspace(min(min(x), min(y)), max(max(x), max(y)), 100)
plt.plot(x_line, x_line, color='black', linestyle='--')
plt.xlabel('NIR_true')
plt.ylabel('NIR_predict')
plt.savefig(picture_file_path, dpi = 400)
plt.show()

  首先,我们通过import语句导入所需模块。其中,numpy用于数值计算,pandas用于数据处理,matplotlib.pyplot用于绘图,scipy.stats.gaussian_kde用于计算核密度估计。

  其次,通过csv_file_path定义待绘图的.csv格式文件的路径,通过picture_file_path定义存储所得图片结果的路径。

  随后,使用pd.read_csv().csv格式文件中读取数据,并存储在名为dataDataFrame中。通过筛选条件data["26"] == 1DataFrame中获取符合指定条件的数据,并分别存储在xy中。

  接下来,使用np.vstack()xy垂直堆叠为一个二维数组xy,并使用scipy.stats.gaussian_kde()计算二维数据的核密度估计值,并将其存储在z中;使用z.argsort()z进行排序,返回索引值,并将其存储在idx中。使用plt.scatter()绘制散点图,其中xy是散点的横纵坐标,c是颜色值,s是散点的大小,cmap是颜色映射,并使用plt.colorbar()添加颜色条。

  紧接着,使用plt.rc()设置字体为Times New Roman;随后,生成一条直线的横坐标范围,使用np.linspace()生成一系列横坐标值,并存储在x_line中;这些点将组成后续所得散点图中的x = y线;使用plt.plot()绘制直线,颜色为黑色,线型为虚线。此外,使用plt.xlabel()plt.ylabel()添加x轴和y轴的标签,使用plt.savefig()将图形保存为指定路径的图片文件,设置dpi值为400。最后,使用plt.show()显示图形。

  执行上述代码,即可在结果文件夹中看到所得图片;如下图所示。

  可以看到,我们已经绘制得到了指定数据之间的密度散点图。当然,我这里所选色带,将密度较低的区域标记为红色系,密度较高的区域标记为了蓝色系,可能和一般情况下大家常用的色系相反——我是一开始选错了,后面也没有修改,这里大家理解即可;如果需要修改这个色系,大家修改上述代码中的cmap = "Spectral"部分即可。

  至此,大功告成。

欢迎关注:疯狂学习GIS

这篇关于Python中matplotlib绘制密度散点图的方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/940491

相关文章

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Java 方法重载Overload常见误区及注意事项

《Java方法重载Overload常见误区及注意事项》Java方法重载允许同一类中同名方法通过参数类型、数量、顺序差异实现功能扩展,提升代码灵活性,核心条件为参数列表不同,不涉及返回类型、访问修饰符... 目录Java 方法重载(Overload)详解一、方法重载的核心条件二、构成方法重载的具体情况三、不构

Python包管理工具pip的升级指南

《Python包管理工具pip的升级指南》本文全面探讨Python包管理工具pip的升级策略,从基础升级方法到高级技巧,涵盖不同操作系统环境下的最佳实践,我们将深入分析pip的工作原理,介绍多种升级方... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker