Matplotlib - 绘制 带有对角线的散点图 (Diagonal Scatter Plots) 函数源码

news2024/12/30 4:30:42

欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://blog.csdn.net/caroline_wendy/article/details/131384440

Scatter Plots

Matplotlib 是一个用于绘制二维图形的 Python 库,提供了一个 pyplot 模块,用于创建各种类型的图表。其中一种图表是散点图(Scatter Plots),用于展示两个变量之间的关系,以及数据的分布情况。要绘制散点图,使用 pyplot.scatter() 函数,接受以下参数:

  • x, y:表示数据点的横纵坐标,可以是浮点数或者数组。
  • s:表示数据点的大小,可以是一个常数或者一个数组,单位是点的平方(1 点 = 1/72 英寸)。
  • c:表示数据点的颜色,可以是一个常数、一个数组、一个颜色序列或者一个颜色字符串。如果是一个数组,那么会根据 cmap 参数来映射颜色;如果是一个颜色序列,那么长度必须和数据点相同;如果是一个颜色字符串,那么所有数据点都使用该颜色。
  • marker:表示数据点的形状,可以是一个 MarkerStyle 实例或者一个简写字符串。详细的形状列表可以参考 matplotlib.markers 文档。
  • cmap:表示用于映射颜色的 Colormap 实例或者注册的颜色图名称。如果 c 是 RGB(A) 值,那么该参数会被忽略。
  • norm:表示用于将数据标准化到 [0, 1] 区间的 Normalize 实例或者名称。默认情况下,使用线性标准化,将最小值映射到 0,最大值映射到 1。如果 c 是 RGB(A) 值,那么该参数会被忽略。
  • vmin, vmax:当使用标量数据并且没有指定 norm 时,vmin 和 vmax 定义了颜色图覆盖的数据范围。默认情况下,颜色图覆盖了所有数据的值域。

主要:

  1. 设置主题:sns.set_theme(style="white")
  2. 设置 Figure 尺寸:fig.set_size_inches(10, 10)
  3. 绘制对角线:ax.plot()
  4. 绘制散点图:ax.scatter()
  5. 绘制标注:ax.annotate()

源码如下:

#!/usr/bin/env python
# -- coding: utf-8 --
"""
Copyright (c) 2022. All rights reserved.
Created by C. L. Wang on 2023/6/25
"""
import os

import seaborn as sns

sns.set_theme(style="white")

import matplotlib.pyplot as plt
import numpy as np

from myutils.project_utils import read_excel_to_df
from root_dir import DATA_DIR


def draw_diagonal_scatter_plots(
    data_better, data_ref, label_list,
    min_scale=0.0, max_scale=1.05,
    x_label="", y_label="",
    save_name=""
):
    """
    绘制对角线散点图

    :param data_better: 优质数据,数据位于右下方
    :param data_ref:    对比数据
    :param label_list:  标签
    :param min_scale:   最小范围
    :param max_scale:   最大范围
    :param x_label:     x轴描述
    :param y_label:     y轴描述
    :param save_name:   文件存储
    :return: 图
    """
    assert len(data_ref) == len(data_better) == len(label_list)

    fig, ax = plt.subplots()
    fig.set_size_inches(10, 10)

    ax.grid(True)
    ax.plot([min_scale, max_scale], [min_scale, max_scale], ls="--", c=".3")
    ax.scatter(data_ref, data_better, s=100, edgecolors="black")

    plt.xlim(min_scale, max_scale)
    plt.ylim(min_scale, max_scale)
    plt.xticks(fontsize=15)
    plt.yticks(fontsize=15)
    plt.xlabel(x_label, fontsize=20)
    plt.ylabel(y_label, fontsize=20)

    for i, txt in enumerate(label_list):
        if data_ref[i] - data_better[i] > 0.025:
            ax.annotate(txt, (data_ref[i] * 1.03, data_better[i]), fontsize=10, fontweight='bold')

    if save_name:
        # transparent=True
        assert save_name.endswith("png") or save_name.endswith("jpg")
        plt.savefig(save_name, bbox_inches='tight', format='png')

    plt.show()


def main():
    df = read_excel_to_df(os.path.join(DATA_DIR, "Strategy-v1v2v3v4-TMScore.xls"))
    data1 = df["m0-score"]
    data2 = df["max-score"]
    label_list = df["target"]
    print(f"data1 : {round(float(np.mean(data1)) * 100, 4)}±{round(float(np.std(data1)), 4)}")
    print(f"data2 : {round(float(np.mean(data2)) * 100, 4)}±{round(float(np.std(data2)), 4)}")
    draw_diagonal_scatter_plots(data1, data2, label_list, min_scale=0.35, max_scale=1.05,
                                x_label="Our P.S.P. (TMScore)", y_label="CASP15 SOTA (TMScore)",
                                save_name="img.png")


if __name__ == '__main__':
    main()

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

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

相关文章

实战经验---好用的Midjourney提示词

说明:本文基于Midjourney(下称MJ)官方说明书整理,分2篇文章发布,这是第1篇。内容主要包括绘画指令(Prompt)、提示、参数、设置、模型选择等。 由于是整理文本,过程中个别地方为了显…

应对流量损耗:提升APP广告变现效果的关键策略!

​引言: 在APP广告变现的过程中,流量损耗是一个常见的问题,它不可避免地会发生。尽管开发者可以在合理的范围内承受这种损耗,但如果出现大范围的损耗,那就意味着在广告变现过程中出现了一些问题,限制了开发…

ThreadPoolExecutor的有参构造

核心要点 通过查看ThreadPoolExecutor里面的构造方法可以发现都是调用了方法参数最多的那个。 参数最多的构造方法展示 映入眼帘的是一些健壮性校验corePoolSize < 0&#xff1b;可以发现这个判断是核心线程的个数不能小于零。但是也就说明核心线程的个数可以等于零。maxim…

LLM - 搭建 DrugGPT 与药物分子领域结合的 ChatGPT 系统

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/131384199 论文&#xff1a;DrugChat: Towards Enabling ChatGPT-Like Capabilities on Drug Molecule Graphs DrugChat&#xff0c;基…

【简单认识Nginx服务性能与安全优化】

文章目录 Nginx隐藏版本相关信息1.隐藏版本号2.修改版本号及相关信息 二、修改Nginx运行时的属主和属组三、配置Nginx网页缓存时间四、配置Nginx站点日志分割五、设置Nginx长连接及超时时间六、配置Nginx网页压缩七、配置Nginx防盗链1.模拟盗链2.配置防盗链并测试 Nginx隐藏版本…

【算法】数学相关知识总结

文章目录 gcd 和 lcm取模运算 %求一个点和一片矩形区域之间的最短距离 本文用于记录一些关于算法题中偶尔被使用到的数学相关知识。 gcd 和 lcm gcd 和 lcm 分别是 最大公约数&#xff08;Greatest common divisor&#xff09; 和 最小公因数&#xff08;Least Common Multip…

Nginx-redis【会话保持】

什么是会话保持 当用于登录一个网站服务器&#xff0c; 网站服务器会将用户的登录信息存储下来&#xff08;存储session&#xff09;&#xff0c;以保证我们能一直处于登录在线的状态 为什么要做会话保持 由于我们使用的是负载均衡轮询机制&#xff0c;会导致用户请求分散在…

nginx页面优化

文章目录 nginx页面优化一.nginx优化1.版本号1.1查看版本号1.2修改版本号1.2.1修改配置文件1.2.2修改源码文件&#xff0c;重新编译安装 2.nginx的日志分割2.1 写日志分割的脚本2.2给脚本执行权限、执行2.3创建定时任务可以每个月固定分割一次 3.nginx的页面压缩3.1配置3.2验证…

第1讲 Camera Sensor Driver课程简介

更多资源&#xff1a; 资源描述在线课程极客笔记在线课程知识星球星球名称&#xff1a;深入浅出Android Camera 星球ID: 17296815Wechat极客笔记圈 课程内容介绍 目标&#xff1a; 课程主要帮助大家理解camera sensor基本概念及原理知识&#xff0c;理解高通camera sensor驱…

前端开发——常用案例分享

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

美one,不想只做李佳琦背后的MCN

文 | 螳螂观察 作者 | 青月 今年618&#xff0c;处在消费提振的关键时期&#xff0c;又面临着行业竞争日趋激烈&#xff0c;各大电商平台都希望能交出一份让市场满意的“期中答卷”&#xff0c;直播不可避免的成为了“兵家必争之地”。 京东请来了罗永浩与“交个朋友”入驻&a…

抖音seo矩阵系统源码|需求文档编译说明(二)

目录 1.抖音seo矩阵系统文档开发流程 2.各平台源码编译方式说明 3.底层技术功能表达式 1.抖音seo矩阵系统文档开发流程 ①产品原型 ②需求文档 ③产品流程图 ④部署方式说明 ⑤完整源码 ⑥源码编译方式说明 ⑦三方框架和SDK使用情况说明和代码位置 ⑧平台操作文档 ⑨程序架…

完美外贸企业邮箱签名设置指南:提升专业形象,优化商务沟通

邮箱签名是一个很好的方式&#xff0c;让您的外贸企业觉得你的公司比较专业。它可以包括公司名称和标志&#xff0c;联系信息和其他相关信息。以下是一些指导原则&#xff0c;可以帮助您创建适合您业务的邮箱签名: 第一步:选择一个合适的Logo 选择一个适合你的企业的标志是很重…

踏响新中国钢铁工业的铿锵足音《淬火丹心》湖北卫视热血开播

由湖北省广播电视局、湖北广播电视台、湖北长江华晟影视有限责任公司等联合摄制&#xff0c;向勇执导&#xff0c;唐曾、吕一、王雨、董晴等主演的大型现代工业题材剧《淬火丹心》&#xff0c;将于6月25日登陆湖北卫视长江剧场开播。该剧以年轻一代中国钢铁人的励志成长为主线&…

排序算法——计数排序

计数排序 以升序排序为例 文章目录 计数排序什么是计数排序实现思路具体步骤实现代码时间复杂度和局限性时间复杂度局限性 什么是计数排序 计数排序是一个非基于比较的排序算法&#xff0c;该算法于1954年由 Harold H. Seward 提出基本思想&#xff1a;是对于给定的输入序列中…

运算放大器(一):电压跟随器

一、电压跟随器 电压跟随器&#xff08;单位增益放大器、缓冲放大器或隔离放大器&#xff09;是一种电压放大倍数为 1 的运算放大器&#xff0c;能够将输入信号的电压放大到同样的幅度并输出&#xff0c;同时保持输入输出电阻不变&#xff08;电压跟随器的输入电阻很大&#x…

Python网络编程:socket包的用法

持续补充 1 网络编程 网络编程&#xff0c;主要用于两台或多台计算机之间的通信&#xff0c;也可以是同一台计算机内不同进程之间的通信。Socket套接字可以用来实现网络通信。关于Socket套接字&#xff0c;需要注意以下几点&#xff1a; Socket是网络通信中应用层和传输层之间…

安装numpy

pip install numpy1.21.6 -i https://mirrors.aliyun.com/pypi/simple/ 最外面的python.exe 是默认版本 下载包----第二种方式

调用有道API实现图片翻译

调用有道API实现图片翻译 1&#xff0e;作者介绍2&#xff0e;关于理论方面的知识介绍3&#xff0e;调用有道API实现图片翻译实验3.1官方代码与结果3.2解码3.3换行输出3.4 示例展示 1&#xff0e;作者介绍 周慧龙&#xff0c;男&#xff0c;西安工程大学电子信息学院&#xff…