iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python绘制散点密度图的三种方式详解
  • 472
分享到

Python绘制散点密度图的三种方式详解

2024-04-02 19:04:59 472人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录方式一方式二方式三方式一 import matplotlib.pyplot as plt import numpy as np from scipy.stats import g

方式一

import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import gaussian_kde
from mpl_toolkits.axes_grid1 import make_axes_locatable
from matplotlib import rcParams
config = {"font.family":'Times New Roman',"font.size": 16,"mathtext.fontset":'stix'}
rcParams.update(config)
# 读取数据
import pandas as pd
filename=r'F:/Rpython/lp37/testdata.xlsx'
df2=pd.read_excel(filename)#读取文件
x=df2['data1'].values
y=df2['data2'].values
xy = np.vstack([x,y])
z = gaussian_kde(xy)(xy)
idx = z.argsort()
x, y, z = x[idx], y[idx], z[idx]
fig,ax=plt.subplots(figsize=(12,9),dpi=100)
scatter=ax.scatter(x,y,marker='o',c=z,edgecolors='',s=15,label='LST',cmap='Spectral_r')
cbar=plt.colorbar(scatter,shrink=1,orientation='vertical',extend='both',pad=0.015,aspect=30,label='frequency') #orientation='horizontal'
font3={'family':'SimHei','size':16,'color':'k'}
plt.ylabel("估计值",fontdict=font3)
plt.xlabel("预测值",fontdict=font3)
plt.savefig('F:/RPython/lp37/plot70.png',dpi=800,bbox_inches='tight',pad_inches=0)
plt.show()

方式二

from statistics import mean
import matplotlib.pyplot as plt
from sklearn.metrics import explained_variance_score,r2_score,median_absolute_error,mean_squared_error,mean_absolute_error
from scipy import stats
import numpy as np
from matplotlib import rcParams
config = {"font.family":'Times New Roman',"font.size": 16,"mathtext.fontset":'stix'}
rcParams.update(config)
def scatter_out_1(x,y): ## x,y为两个需要做对比分析的两个量。
    # ==========计算评价指标==========
    BIAS = mean(x - y)
    MSE = mean_squared_error(x, y)
    RMSE = np.power(MSE, 0.5)
    R2 = r2_score(x, y)
    MAE = mean_absolute_error(x, y)
    EV = explained_variance_score(x, y)
    print('==========算法评价指标==========')
    print('BIAS:', '%.3f' % (BIAS))
    print('Explained Variance(EV):', '%.3f' % (EV))
    print('Mean Absolute Error(MAE):', '%.3f' % (MAE))
    print('Mean squared error(MSE):', '%.3f' % (MSE))
    print('Root Mean Squard Error(RMSE):', '%.3f' % (RMSE))
    print('R_squared:', '%.3f' % (R2))
    # ===========Calculate the point density==========
    xy = np.vstack([x, y])
    z = stats.gaussian_kde(xy)(xy)
    # ===========Sort the points by density, so that the densest points are plotted last===========
    idx = z.argsort()
    x, y, z = x[idx], y[idx], z[idx]
    def best_fit_slope_and_intercept(xs, ys):
        m = (((mean(xs) * mean(ys)) - mean(xs * ys)) / ((mean(xs) * mean(xs)) - mean(xs * xs)))
        b = mean(ys) - m * mean(xs)
        return m, b
    m, b = best_fit_slope_and_intercept(x, y)
    regression_line = []
    for a in x:
        regression_line.append((m * a) + b)
    fig,ax=plt.subplots(figsize=(12,9),dpi=600)
    scatter=ax.scatter(x,y,marker='o',c=z*100,edgecolors='',s=15,label='LST',cmap='Spectral_r')
    cbar=plt.colorbar(scatter,shrink=1,orientation='vertical',extend='both',pad=0.015,aspect=30,label='frequency')
    plt.plot([0,25],[0,25],'black',lw=1.5)  # 画的1:1线,线的颜色为black,线宽为0.8
    plt.plot(x,regression_line,'red',lw=1.5)      # 预测与实测数据之间的回归线
    plt.axis([0,25,0,25])  # 设置线的范围
    plt.xlabel('OBS',family = 'Times New Roman')
    plt.ylabel('PRE',family = 'Times New Roman')
    plt.xticks(fontproperties='Times New Roman')
    plt.yticks(fontproperties='Times New Roman')
    plt.text(1,24, '$N=%.f$' % len(y), family = 'Times New Roman') # text的位置需要根据x,y的大小范围进行调整。
    plt.text(1,23, '$R^2=%.3f$' % R2, family = 'Times New Roman')
    plt.text(1,22, '$BIAS=%.4f$' % BIAS, family = 'Times New Roman')
    plt.text(1,21, '$RMSE=%.3f$' % RMSE, family = 'Times New Roman')
    plt.xlim(0,25)                                  # 设置x坐标轴的显示范围
    plt.ylim(0,25)                                  # 设置y坐标轴的显示范围
    plt.savefig('F:/Rpython/lp37/plot71.png',dpi=800,bbox_inches='tight',pad_inches=0)
    plt.show()

方式三


import pandas as pd
import numpy as np
from scipy import optimize
import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib.colors import NORMalize
from scipy.stats import gaussian_kde
from matplotlib import rcParams
config={"font.family":'Times New Roman',"font.size":16,"mathtext.fontset":'stix'}
rcParams.update(config)
# 读取数据
filename=r'F:/Rpython/lp37/testdata.xlsx'
df2=pd.read_excel(filename)#读取文件
x=df2['data1'].values.ravel()
y=df2['data2'].values.ravel()
N = len(df2['data1'])
#绘制拟合线
x2 = np.linspace(-10,30)
y2 = x2
def f_1(x,A,B):
    return A*x + B
A1,B1 = optimize.curve_fit(f_1,x,y)[0]
y3 = A1*x + B1
# Calculate the point density
xy = np.vstack([x,y])
z = gaussian_kde(xy)(xy)
norm = Normalize(vmin = np.min(z), vmax = np.max(z))
#开始绘图
fig,ax=plt.subplots(figsize=(12,9),dpi=600)
scatter=ax.scatter(x,y,marker='o',c=z*100,edgecolors='',s=15,label='LST',cmap='Spectral_r')
cbar=plt.colorbar(scatter,shrink=1,orientation='vertical',extend='both',pad=0.015,aspect=30,label='frequency')
cbar.ax.locator_params(nbins=8)
cbar.ax.set_yticklabels([0.005,0.010,0.015,0.020,0.025,0.030,0.035])#0,0.005,0.010,0.015,0.020,0.025,0.030,0.035
ax.plot(x2,y2,color='k',linewidth=1.5,linestyle='--')
ax.plot(x,y3,color='r',linewidth=2,linestyle='-')
fontdict1 = {"size":16,"color":"k",'family':'Times New Roman'}
ax.set_xlabel("PRE",fontdict=fontdict1)
ax.set_ylabel("OBS",fontdict=fontdict1)
# ax.grid(True)
ax.set_xlim((0,25))
ax.set_ylim((0,25))
ax.set_xticks(np.arange(0,25.1,step=5))
ax.set_yticks(np.arange(0,25.1,step=5))
plt.savefig('F:/Rpython/lp37/plot72.png',dpi=800,bbox_inches='tight',pad_inches=0)
plt.show()

到此这篇关于Python绘制散点密度图的三种方式详解的文章就介绍到这了,更多相关Python散点密度图内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python绘制散点密度图的三种方式详解

本文链接: https://www.lsjlt.com/news/118656.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python绘制散点密度图的三种方式详解
    目录方式一方式二方式三方式一 import matplotlib.pyplot as plt import numpy as np from scipy.stats import g...
    99+
    2024-04-02
  • Matlab绘制散点密度图的教程详解
    目录效果1工具函数完整代码2参数说明3使用方式3.1散点赋色3.2等高线图3.3带直方图的散点图3.4带直方图的等高线图4使用方式扩展–与ggplot修饰器联动效果 ...
    99+
    2024-04-02
  • Matlab怎么绘制散点密度图
    小编给大家分享一下Matlab怎么绘制散点密度图,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!效果原理也很简单,通过matlab自带的ksdensity获得网格每...
    99+
    2023-06-29
  • Python绘制散点图的教程详解
    少废话,直接上代码  import matplotlib.pyplot as plt import numpy as np # 1. 首先是导入包,创建数据 n = 10 ...
    99+
    2024-04-02
  • python怎么使用seaborn绘制直方图,密度图,散点图
    本文小编为大家详细介绍“python怎么使用seaborn绘制直方图,密度图,散点图”,内容详细,步骤清晰,细节处理妥当,希望这篇“python怎么使用seaborn绘制直方图,密度图,散点图”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢...
    99+
    2023-07-02
  • python散点图的绘制
    目录一、二维散点图的绘制1.采用pandas.plotting.scatter_matrix函数绘制2. 采用seaborn进行绘制二、 三维散点图绘制一、二维散点图的绘制 1.采用...
    99+
    2024-04-02
  • python使用seaborn绘图直方图displot,密度图,散点图
    目录一、直方图distplot()二、密度图2.1 单个样本数据分布密度图一、直方图distplot() import numpy as np import seaborn as ...
    99+
    2024-04-02
  • Python matplotlib 绘制散点图详解建议收藏
    目录前言1. 散点图概述什么是散点图?散点图使用场景绘制散点图步骤案例展示 2. 散点图属性设置散点大小设置散点颜色设置散点样式设置透明度设置散点边框3. 添加折线散点图4. 多类型...
    99+
    2024-04-02
  • Python绘制简单散点图的方法
    散点图,顾名思义是一些散乱的点构成的图。那么这些散乱的点有什么作用呢?散点图通过用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。 绘...
    99+
    2024-04-02
  • Python seaborn数据可视化绘图(直方图,密度图,散点图)
    目录前言一、直方图distplot()二、密度图1.单个样本数据分布密度图 2.两个样本数据分布密度图三、散点图1.jointplot()综合散点图2.拆分综合散点图Joi...
    99+
    2024-04-02
  • python绘制散点图和折线图的方法
    本文实例为大家分享了python绘制散点图和折线图的具体代码,供大家参考,具体内容如下 #散点图,一般和相关分析、回归分析结合使用 import pandas import ...
    99+
    2024-04-02
  • Python+Pyecharts实现散点图的绘制
    目录第1关:Scatter:散点图(一)编程要求代码测试说明第2关:Scatter:散点图(二)编程要求代码测试说明第3关:Scatter:散点图(三)编程要求代码测试说明第1关:S...
    99+
    2024-04-02
  • Python绘制三维图详解
    利用Python绘制三维图 目标: 绘制图像 z2 = x2 + y2 z^2 = x^2 + y^2 ...
    99+
    2023-09-14
    python numpy 开发语言
  • Matlab实现二维散点主方向直方图的绘制详解
    目录工具函数基本使用多组数据修改配色精细修饰简简单单画个二维散点图主方向上的直方图: 工具函数 输入nx2大小的数组,返回以下四个图形对象: H1: ‘数据点&rsqu...
    99+
    2024-04-02
  • python进行相关性分析并绘制散点图详解
    目录 需要用到的库数据读取总结近期,有小伙伴问我关于怎么使用python进行散点图的绘制,这个东西很简单,但是怎么讲相关性的值标注在图形上略显麻烦,因此,在这里记录一下,将...
    99+
    2024-04-02
  • Python+OpenCV绘制灰度直方图详解
    1.直方图的概念 图像直方图是反映一个图像像素分布的统计表,其实横坐标代表了图像像素的种类,可以是灰度的,也可以是彩色的。纵坐标代表了每一种颜色值在图像中的像素总数或者占所有像素个数...
    99+
    2024-04-02
  • Python matplotlib绘制散点图的实例代码
    前言 前面说到的主要是matplotlib对于图像的基础操作,然后从这篇开始,主要说一下点图,分析点图在实际问题的数据处理中应用非常广泛,比如说逻辑回归是利用现有的数据点通过拟合得到...
    99+
    2024-04-02
  • 使用ECharts和Python接口绘制散点图的方法
    使用ECharts和Python接口绘制散点图的方法ECharts是一款优秀的开源可视化库,基于JavaScript语言开发,通过简单的配置即可实现各种图表的绘制和交互效果。而Python则是一种功能强大的编程语言,具有丰富的数据处理和可视...
    99+
    2023-12-17
    Python echarts 散点图
  • 100天精通Python(可视化篇)——第82天:matplotlib绘制不同种类炫酷散点图参数说明+代码实战(二维散点图、三维散点图、散点图矩阵)
    文章目录 专栏导读 0. 前言 1. 参数说明 2. 两主特征:二维散点图 1)普通散点图 2)文字标签散点图 3)带颜色映射的散点图 4)ArcG...
    99+
    2023-08-31
    python matplotlib 二维散点图 三维散点图 二维散点图矩阵 原力计划
  • 解析matplotlib散点图绘制的简明步骤
    快速入门:matplotlib散点图绘制步骤解析 引言:matplotlib是一个强大的Python数据可视化库,可用于绘制各种类型的图表。其中,散点图是一种常用的图表类型,用于展示数据点之间的关系。本文将介绍使用matplot...
    99+
    2024-01-17
    散点图 快速入门
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作