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

相关文章

Scala语法(二) 函数与方法

前言 在前面的章节内我们简单的介绍了Scala的基本语法中, 常量&变量、if判断、循环以及基本的集合:数组、元组、Set、List和Map数据类型的基本操作. 本章, 我们将介绍Scala中的函数与方法. 正文 经常听别人这样介绍Scala, Scala是面向函数式的编程语言. 那么, 函数与方法到底有什么区别呢? 请听我慢慢介绍.(Java中, 只有方法的概念, 没有函数的概念.)

16进制与不同进制之间计算加减乘除的比较快的方法

方法: 1.加分、减法: 将所有的进制的数转成目标进制的数,然后按位加。 如 0x123 +  0x1234 =0x1357 2.乘法、除法: 将所有的进制的数转成二进制数,然后进行移位。 如    0x123456  乘 32(十进制)= ? 0x123456 = 100100011010001010110  (二进制)32=100000(二进制)0x123456

[Mac经验] Python编译安装与手动安装

前言 前段时间在Mac上重新安装了Python. 遇到了几个相关问题,在此记录一下。 正文 Python主要分为编译安装和直接安装. 所谓编译安装,即使用GCC和make命令进行安装。直接安装. 即使用根据软件的使用平台使用.dmg/.exe安装包进行安装。简单实用,不容易出错。缺点是可定制化程度偏低。 安装包的选择(以最新的python3.8.6为例) https://www

[Python] 网络编程(Socket)

1. Socket基础 客户端与服务器连接有两种方式:TCP和UDP,TCP是面向连接的方式(三次握手、四次挥手等),可靠但耗资源,而UDP采用无连接方式,不可靠但速度快。这里面的学问很多,但大部分人知道这些就足够了 2. 一个简单的TCP例子(阻塞方式) 不管是Python还是其它语言,Socket编程几乎都有一个固定模板,下面看一个简单例子,用于计算阶乘和,比如客户端发送5,服务器端返回

计算机毕业设计Python+Spark知识图谱课程推荐系统 课程预测系统 课程大数据 课程数据分析 课程大屏 mooc慕课推荐系统 大数据毕业设计

1 绪 论 1.1 课题研究背景 在线教育学习平台是学生用来进行校内或校外拓展课程学习的平台,平台需要具备在线视频观看,作业提交,形成性考核等功能。在学生学习的过程中,学校的管理者或负责教师需要了解学生的学习情况和学习状态,因此必须要通过学生的学习行为数据进行数据分析,将学生的学习情况直观的展现给用户,方便教师进行学生管理和评测。 现阶段在线教育学习平台,一般会提供两种方向,一种是对普通用户

2024年华为OD机试真题-测试用例执行计划-Python-OD统一考试(C卷D卷)

题目描述: 某个产品当前迭代周期内有N个特性( F1,F2,.......FN)需要进行覆盖测试,每个特性都被评估了对应的优先级,特性使用其ID作为下标进行标识。 设计了M个测试用例(T1,T2......,TM ),每个用例对应了一个覆盖特性的集合,测试用例使用其ID作为下标进行标识,测试用例的优先级定义为其覆盖的特性的优先级之和。 在开展测试之前,需要制定测试用例的执行顺序,规则为:优先级大

xgboost[python版本]的安装

首先需要下载的是: xgboost 在window 下的安装包; Microsoft Visual Studio 2013; anaconda安装包 安装步骤: 先安装anaconda 安装包,里面包括scipy ,python ,numpy ,matplotlib 等众多第三方库;安装包下载时注意要看是32位还是64 位,之后就是一键安装,方便快捷无污染。进入xgboost-maste

matplotlib.pyplot.imshow

官方链接:https://matplotlib.org/devdocs/api/_as_gen/matplotlib.pyplot.imshow.html matplotlib.pyplot.imshow(X, cmap=None, norm=None, aspect=None, interpolation=None, alpha=None, vmin=None, vmax=None, orig

统计学方法的比较与评估

分析不同统计学方法的优缺点以及它们在特定情境下的适用性是一个复杂而有趣的课题。下面我将简要讨论一些常见的统计学方法,并比较它们的特点: 1. **参数统计与非参数统计:**    - 参数统计:假设总体分布的形态,并基于样本数据对总体参数进行估计和假设检验。优点是通常效率高,但缺点是对总体分布的假设可能不成立。    - 非参数统计:不对总体分布形态做出假设,通常基于样本数据的秩或排名进行推断。