【matplotlib基礎】--文本標註

来源:https://www.cnblogs.com/wang_yb/archive/2023/09/10/17691699.html
-Advertisement-
Play Games

Matplotlib 文本和標註可以為數據和圖形之間提供額外的信息,幫助觀察者更好地理解數據和圖形的含義。 文本用於在圖形中添加註釋或提供更詳細的信息,以幫助觀察者理解圖形的含義。標註則是一種更加細粒度的文本信息,可以被用來為特定的數據點或區域提供更詳細的信息。 本篇通過示例依次介紹文本和標註的常用 ...


Matplotlib 文本和標註可以為數據和圖形之間提供額外的信息,幫助觀察者更好地理解數據和圖形的含義。

文本用於在圖形中添加註釋或提供更詳細的信息,以幫助觀察者理解圖形的含義。
標註則是一種更加細粒度的文本信息,可以被用來為特定的數據點或區域提供更詳細的信息。

本篇通過示例依次介紹文本和標註的常用使用方式。

1. 文本

文本在圖形中主要用在標題,坐標軸,圖形中的一些說明等等地方。

1.1. 顏色和字體

下麵的示例演示了圖形中各個部分文本的字體大小和顏色設置的方法:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 10, 100)
y = x*x 

fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])

#設置 標題 的字體和顏色
ax.set_title("標題", fontdict={"fontsize": 25, "color": "r"})

#設置 X軸和Y軸 標簽的字體和顏色
ax.set_xlabel("x軸", fontdict={"fontsize": 20,"color": "g"})
ax.set_ylabel("y軸", fontdict={"fontsize": 20,"color": "b"})

#按照坐標位置(2, 60)添加一段文本
ax.text(2, 60, "f(x) = x*x", fontdict={"fontsize": 15,"color": "k"})
ax.plot(x, y, label="sin")
ax.legend()

image.png

需要掌握的部分就是 fontdict 這個參數,這個字典還有其他參數可以控制字體,這裡只演示了兩個常用的參數:

  1. fontsize:字體大小設置
  2. color:文字顏色

1.2. latex公式

上面的示例中,f(x) = x*x 可以 latex的方式來顯示。
latex讓能夠顯示各種複雜的數學公式,讓文本看起來和數學書中一樣。


x = np.linspace(0, 10, 100)
y = x*x 

fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])

#設置 標題 的字體和顏色
ax.set_title("標題", fontdict={"fontsize": 25, "color": "r"})

#設置 X軸和Y軸 標簽的字體和顏色
ax.set_xlabel("x", fontdict={"fontsize": 20,"color": "g"})
ax.set_ylabel("$x^2$", fontdict={"fontsize": 20,"color": "b"})

#按照坐標位置(2, 60)添加一段文本
ax.text(2, 60, "$f(x) = x^2$", fontdict={"fontsize": 15,"color": "k"})
ax.plot(x, y, label="sin")
ax.legend()

image.png

上面將 Y軸的文本圖形中間的數學公式改成了 latex 格式。

2. 標註

圖形添加標註時,一般包含2個部分,一個指向數據的箭頭,一段說明文字。
設置標註的核心參數是:

  1. xy:這是待標註的數據點的坐標
  2. xytext:標註文本的坐標,一般是文本的左上角的點
  3. bbox:文本框的樣式字典
  4. arrowprops:箭頭的樣式字典

下麵的示例中,通過設置上面4個參數來演示幾種常用的標註:

x = np.array(range(10))
y = np.array([89, 84, 30, 67, 41, 71, 62, 20, 89, 3])

fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
ax.plot(x, y)

ax.annotate(
    "第一個值",
    xy=(0, 89),
    xytext=(-0.3, 70),
    arrowprops={"arrowstyle": "->", "connectionstyle": "arc3,rad=-0.5"},
)

ax.annotate(
    "轉折點一",
    xy=(2, 30),
    xytext=(1.8, 10),
    bbox={"boxstyle": "round", "fc": "none", "ec": "g"},
    arrowprops={"arrowstyle": "->"},
)

ax.annotate(
    "轉折點二",
    xy=(3, 67),
    xytext=(3, 85),
    bbox={"boxstyle": "round", "fc": "lightblue", "ec": "r"},
    arrowprops={"arrowstyle": "fancy"},
)

ax.annotate(
    "最大值",
    xy=(8, 89),
    xytext=(6, 85),
    bbox={"boxstyle": "round", "alpha":0.1},
    arrowprops={"arrowstyle": "wedge,tail_width=0.8", "alpha":0.1},
)

image.png

  1. 第一個值:設置了箭頭的彎曲度
  2. 轉折點一:設置了邊框
  3. 轉折點二:設置了邊框和背景色,同時設置了另一種箭頭樣式
  4. 最大值:設置了邊框和另一種箭頭的透明度。

3. 總結

在使用 Matplotlib 進行數據可視化時,合理使用文本和標註可以大大提高圖形的可讀性和易懂性,幫助觀察者更好地理解數據和圖形的含義。

但是,分析結果中是最重要的還是圖形和數據,文本和標註不宜過度添加,也不能太花哨,以致喧賓奪主,本末倒置。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 隨著需求的不斷開發,前端項目不斷膨脹,業務提出:你們的首頁載入也太慢啦,我都需要7、8秒才能看到內容,於是乎主管就讓我聯合後端開啟優化專項,目標是3s內展示完全首頁的內容。 性能指標 開啟優化時,我們要清晰的知道現狀和目標,以及我們採用什麼樣的手段,通過檢測什麼指標來查看到優化的過程。 結果指標 根 ...
  • 功能介紹 登錄 首頁 修改密碼 提交申請 提交列表 數據可視化 審核列表 前端 components結構 搭建Vue項目 ​ Vue3快速上手: ​ https://cn.vuejs.org/guide/quick-start.html#creating-a-vue-application 頁面佈局 ...
  • 溫馨提示:本文以vue3+vite+ts舉例,vite配置和ts語法側重較少,比較適合有vuex或者vue基礎的小伙伴們兒查閱。 安裝pinia yarn yarn add pinia npm npm install pinia pnpm pnpm add pinia 1-開始 方式一:在main. ...
  • 官方代碼是直接使用JDK的Deque對象,這樣的代碼能學到什麼?熟練操作API嗎?還是自己實現一個最小棧吧,用時擊敗100%,記憶體擊敗78% ...
  • 在您的應用程式中,由Spring IoC容器管理的形成其核心的對象被稱為"bean"。一個bean是由Spring IoC容器實例化、組裝和管理的對象。這些bean是通過您提供給容器的配置元數據創建的,例如,在前面章節中已經看到的XML <bean/> 定義。 Bean定義包含了所謂的配置元數據,容 ...
  • 因為Docker Hub無法打開,Jupyter Notebook等官方鏡像也無法下載,所以另闢蹊徑下載了熱門的Python3基礎鏡像,從頭開始安裝純凈版本的Jupyter Notebook環境,本文記錄了完整的Jupyter Notebook安裝過程,方便自己查閱,也供其他人員參考,請確保當前已有 ...
  • 1 Nacos ⼀致性協議 1.1 為什麼 Nacos 需要⼀致性協議 Nacos儘可能減少用戶部署以及運維成本,做到用戶只需要⼀個程式包,就快速單機模式啟動 Nacos 或集群模式啟動 Nacos。而 Nacos 是⼀個需要存儲數據的組件,為實現目標,就要在 Nacos 內部實現數據存儲。單機問題 ...
  • 在定位公司問題的時候,需要瞭解一下skywalking的相關知識,而agent就提上了日程。 官網文檔 Agent技術是Jdk在1.5版本之後,所提供的一個在jvm啟動前後對部分java類代理加強的機制。由於是直接修改位元組碼,並不會對業務代碼有註入,所以可以很好的應用於監控或者熱部署等場景。 正常所 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...