Python绘制带有密度的散点图:matplotlib
liuian 2024-12-20 17:19 68 浏览
??本文介绍基于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_kde
csv_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格式文件中读取数据,并存储在名为data的DataFrame中。通过筛选条件data["26"] == 1从DataFrame中获取符合指定条件的数据,并分别存储在x和y中。
??接下来,使用np.vstack()将x和y垂直堆叠为一个二维数组xy,并使用scipy.stats.gaussian_kde()计算二维数据的核密度估计值,并将其存储在z中;使用z.argsort()对z进行排序,返回索引值,并将其存储在idx中。使用plt.scatter()绘制散点图,其中x和y是散点的横纵坐标,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
相关推荐
- wifi密码破解器电脑版(wifi密码破解工具电脑版)
-
肯定不是万能钥匙这种“破解”wifi的东西。不是一两次见到把万能钥匙当做破解wifi用的人了,但实际上那玩意就是个分享wifi的软件。你连上一个wifi,密码就会被分享到云端(可以不分享),别...
- 手机临时文件夹在哪个位置(手机临时文件夹在哪个位置找)
-
1.手机文件临时文件是指在手机使用过程中产生的临时文件。2.手机应用程序在运行时需要产生一些临时文件,如缓存文件、日志文件、临时下载文件等,这些文件可以提高应用程序的运行效率和用户体验。但是,这些...
- 安卓10系统下载(安卓10 下载)
-
方法及步骤: 其实使用安卓车机下载歌曲的方法十分的简单,具体操作步骤和安卓手机一模一样。 首先我们需要在车机的应用商店上,下载一个音乐播放器,例如网易云音乐或者QQ音乐等。 下载完成后点击进入...
- 华硕人工客服24小时吗(华硕售后人工客服)
-
华硕服务中心广东省惠州市惠东县城平深路(创富斜对面)惠东同心电脑城1L11(1.3km)笔记本电脑,平板电脑华硕服务中心广东省惠州市惠东县平山镇同心电脑城1F26(1.3km)笔记本电脑,平...
- 电脑音量小喇叭不见了(电脑声音喇叭图标不见了怎么办)
-
如果您电脑上的小喇叭(扬声器)不见了,可以尝试以下方法找回:1.检查设备管理器:在Windows下,右键点击“我的电脑”(或此电脑)->点击“属性”->点击“设备管理器”,查看“声音、视...
- 腾达路由器手机设置教程(腾达路由器手机设置教程视频)
-
用手机设置腾达路由器的方法如下:1在手机上打开浏览器,输入路由器背面的管理IP和用户及对应的密码2一般第一次打开,默认会跳出设置向导,准备好宽带用户名和密码,3按向导提示输入相应内容4在无线设置的安全...
- 自配电脑配置推荐(自配电脑配置推荐百度)
-
首先,像这类软件最低要求不高。最高没上限。纯粹看你的工程量大小。CPU有双核,内存有4G,就可以运行。但是实际体验肯定比较差,卡是肯德。渲染时间也会超长,一个小作品渲染几小时是正常的。稍微大点的工程也...
- 2025年平板性价比排行(2020年值得买的平板)
-
推荐台电P30S好。 基本配置:10.1英寸IPS广视角屏幕,1280*800分辨率,16:10的黄金显示比例,K9高压独立功放,支持3.5mm耳麦接口,联发科MT8183八核处理器,4GB...
- 2020显卡天梯图10月(2020显卡天梯图极速空间)
-
排行球队名称积分已赛胜平负进球失球净胜球 1?诺维奇城974629107753639 2?沃特福德91462710...
-
- 笔记本电脑无线网络连接(笔记本电脑无线网络连接不上怎么办)
-
一、笔记本电脑怎么连接wifi---win7系统笔记本连接wifi1、要先创建无线网络连接,将鼠标移到Win7的开始菜单,然后点击“控制面板”。2、然后点击“网络和Internet”。3、再打开“网络和共享中心”,这是Win7系统必有的功...
-
2025-12-22 05:55 liuian
- wind数据库(wind数据库官网)
-
先购买wind数据库,安装好wind取得使用权后,按照wind所给提示,输入账户和密码可使用wind数据库。Wind资讯金融终端是一个集实时行情、资料查询、数据浏览、研究分析、新闻资讯为一体的金融数据...
- 如何关闭360家庭防火墙(如果关闭360家庭防火墙)
-
关闭方法如下:1.打开手机360主界面之后,点击“安全防护中心”。2.点击第三列“入口防护”下方的“查看状态”按钮。3.在列出的功能项中找到“局域网防护”,直接点击后面的“关闭”按钮,关闭所有的“局域...
- 笔记本电脑型号配置怎么看(怎么查自己电脑的型号)
-
查电脑的配置和型号方法:方法一:1、右键单击“此电脑”,点击属性2、这里可以看到操作系统,CPU等大致信息3、点击设备管理器4、这里可以查看具体硬件的详细信方法二:1、首先打开电脑上的“控制面板”2、...
- pscs6序列号是什么
-
AdobePhotoshopCS6就二个版本(测试版和正式版)1、AdobePhotoshopCS6是AdobePhotoshop的第13代,是一个较为重大的版本更新。2、Photoshop在前几...
- 一周热门
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)
