最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python+Matplotlib繪制帶有對(duì)角線的散點(diǎn)圖的示例代碼

 更新時(shí)間:2023年06月26日 09:01:50   作者:SpikeKing  
Matplotlib 是一個(gè)用于繪制二維圖形的 Python 庫,這篇文章主要介紹了Python如何利用Matplotlib繪制帶有對(duì)角線的散點(diǎn)圖,需要的小伙伴可以參考一下

效果圖

Matplotlib 是一個(gè)用于繪制二維圖形的 Python 庫,提供了一個(gè) pyplot 模塊,用于創(chuàng)建各種類型的圖表。其中一種圖表是散點(diǎn)圖(Scatter Plots),用于展示兩個(gè)變量之間的關(guān)系,以及數(shù)據(jù)的分布情況。要繪制散點(diǎn)圖,使用 pyplot.scatter() 函數(shù),接受以下參數(shù):

x, y:表示數(shù)據(jù)點(diǎn)的橫縱坐標(biāo),可以是浮點(diǎn)數(shù)或者數(shù)組。

s:表示數(shù)據(jù)點(diǎn)的大小,可以是一個(gè)常數(shù)或者一個(gè)數(shù)組,單位是點(diǎn)的平方(1 點(diǎn) = 1/72 英寸)。

c:表示數(shù)據(jù)點(diǎn)的顏色,可以是一個(gè)常數(shù)、一個(gè)數(shù)組、一個(gè)顏色序列或者一個(gè)顏色字符串。如果是一個(gè)數(shù)組,那么會(huì)根據(jù) cmap 參數(shù)來映射顏色;如果是一個(gè)顏色序列,那么長度必須和數(shù)據(jù)點(diǎn)相同;如果是一個(gè)顏色字符串,那么所有數(shù)據(jù)點(diǎn)都使用該顏色。

marker:表示數(shù)據(jù)點(diǎn)的形狀,可以是一個(gè) MarkerStyle 實(shí)例或者一個(gè)簡寫字符串。詳細(xì)的形狀列表可以參考 matplotlib.markers 文檔。

cmap:表示用于映射顏色的 Colormap 實(shí)例或者注冊的顏色圖名稱。如果 c 是 RGB(A) 值,那么該參數(shù)會(huì)被忽略。

norm:表示用于將數(shù)據(jù)標(biāo)準(zhǔn)化到 [0, 1] 區(qū)間的 Normalize 實(shí)例或者名稱。默認(rèn)情況下,使用線性標(biāo)準(zhǔn)化,將最小值映射到 0,最大值映射到 1。如果 c 是 RGB(A) 值,那么該參數(shù)會(huì)被忽略。

vmin, vmax:當(dāng)使用標(biāo)量數(shù)據(jù)并且沒有指定 norm 時(shí),vmin 和 vmax 定義了顏色圖覆蓋的數(shù)據(jù)范圍。默認(rèn)情況下,顏色圖覆蓋了所有數(shù)據(jù)的值域。

主要:

  • 設(shè)置主題:sns.set_theme(style="white")
  • 設(shè)置 Figure 尺寸:fig.set_size_inches(10, 10)
  • 繪制對(duì)角線:ax.plot()
  • 繪制散點(diǎn)圖:ax.scatter()
  • 繪制標(biāo)注: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=""
):
    """
    繪制對(duì)角線散點(diǎn)圖

    :param data_better: 優(yōu)質(zhì)數(shù)據(jù),數(shù)據(jù)位于右下方
    :param data_ref:    對(duì)比數(shù)據(jù)
    :param label_list:  標(biāo)簽
    :param min_scale:   最小范圍
    :param max_scale:   最大范圍
    :param x_label:     x軸描述
    :param y_label:     y軸描述
    :param save_name:   文件存儲(chǔ)
    :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()

到此這篇關(guān)于Python+Matplotlib繪制帶有對(duì)角線的散點(diǎn)圖的示例代碼的文章就介紹到這了,更多相關(guān)Python Matplotlib繪制散點(diǎn)圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

伊宁市| 岱山县| SHOW| 亚东县| 锡林浩特市| 神农架林区| 黄骅市| 恩施市| 景德镇市| 密云县| 临猗县| 林甸县| 华安县| 十堰市| 南汇区| 方正县| 体育| 荥阳市| 东阳市| 漳浦县| 玉门市| 禹州市| 贵南县| 八宿县| 乌审旗| 河北区| 方山县| 射洪县| 郓城县| 阳西县| 枣阳市| 封丘县| 商丘市| 铁岭县| 涞源县| 青海省| 南岸区| 桂林市| 陵川县| 湟源县| 六枝特区|