自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Matplotlib中的titles(標(biāo)題)、labels(標(biāo)簽)和legends(圖例)

開發(fā)
Matplotlib是一個(gè)Python中常用的繪圖庫,用于創(chuàng)建各種類型的圖表。在Matplotlib中,你可以使用titles(標(biāo)題)、labels(標(biāo)簽)和legends(圖例)來增強(qiáng)你的圖表。本文討論P(yáng)ython的Matplotlib繪圖庫中可用的不同標(biāo)記選項(xiàng)。

Matplotlib是一個(gè)Python中常用的繪圖庫,用于創(chuàng)建各種類型的圖表。在Matplotlib中,你可以使用titles(標(biāo)題)、labels(標(biāo)簽)和legends(圖例)來增強(qiáng)你的圖表。本文討論P(yáng)ython的Matplotlib繪圖庫中可用的不同標(biāo)記選項(xiàng)。

Figure, subplots 和axes列表

在Matplotlib中,F(xiàn)igure是整個(gè)圖形窗口,它可以包含一個(gè)或多個(gè)子圖(Axes)。Axes是實(shí)際繪圖區(qū)域,而Figure則是包含所有Axes、標(biāo)題、標(biāo)簽等元素的容器。

在使用可以使用Matplotlib時(shí)可以使用plt.subplots()命令一次創(chuàng)建多個(gè)子圖的占位符,輸入?yún)?shù)nrows和ncols定義要返回的行和列的數(shù)量。返回?cái)?shù)組包含ncols=2個(gè)元素的nrows=2個(gè)列表。每個(gè)元素都引用一個(gè)子圖。

import matplotlib.pyplot as plt
 
 fig, axs = plt.subplots(
  nrows=2, ncols=2, figsize=(10, 7), sharex=True, sharey=True
 )
 
 # Fig = Figure object,
 # axs = list of axes
 # axs = [[ax1, ax2], 
 #       [ax3, ax4]]

axes和labels

axis指的是子圖,通常稱為ax的軸對象中的x軸和y軸的一個(gè)組合。我們使用列表推導(dǎo)遍歷所有軸,并使用ax.set_xlabel("whatever")為每個(gè)子圖分配xlabel和ylabel??梢酝ㄟ^調(diào)用ax2 = ax.twinx()來創(chuàng)建另一個(gè)y軸;ax2.set_ylabel(“Second y-axis”);但這會使繪制圖例等事情變得復(fù)雜,因?yàn)楝F(xiàn)在繪圖配置在同一子圖中被分成兩個(gè)容器,所以我們一般都會將一個(gè)x軸和y軸放在一個(gè)子圖中,也就是我們上面說的一個(gè)組合。

i = 1
 for ax in [item for sublist in axs for item in sublist]:
  ax.set_xlabel(f"xlabel {i}")
  ax.set_ylabel(f"ylabel {i}")
  i+=1

Titles

每個(gè)子圖最多可以有三個(gè)標(biāo)題Titles 。默認(rèn)情況下,子圖標(biāo)題顯示在子圖的上方。使用loc參數(shù)可以將唯一的標(biāo)題與子圖的左邊緣或右邊緣對齊,也可以向子圖添加其他標(biāo)題。有時(shí)將主標(biāo)題左對齊并添加更多信息(如數(shù)據(jù)源)可能會很有用,或者使用不同的字體或較小的字體右對齊。

ax.set_title(f"Title {i} left", loc="left", fnotallow=8)
 ax.set_title(f"Title {i} right", loc="right", fnotallow=10)
 ax.set_title(f"Title {i} center", loc="center", fnotallow=14)

在Matplotlib中,set_title和set_ylabel等函數(shù)可以將字體、字體大小和字體粗細(xì)作為參數(shù)或作為一個(gè)名為fontdict的字典。

ax.set_title(f"Title {i} left", loc="left", fnotallow=dict(
  size=8, 
  family="Times New Roman", 
  weight="bold")
 )

圖的Title 和label

圖標(biāo)題在Matplotlib中稱為suptitle。默認(rèn)情況下,它是一個(gè)標(biāo)題,在最上面的子標(biāo)題中間對齊,字體大小比普通的子標(biāo)題大。

與軸標(biāo)簽類似,y軸和x軸也有替代標(biāo)簽。默認(rèn)情況下,Supylabel以居中對齊的方式出現(xiàn)在圖的左側(cè),而supxlabel以居中對齊的方式出現(xiàn)在圖的底部。

可以自定義圖形標(biāo)簽和標(biāo)題的位置,方法是使用x和y參數(shù),ha用于水平對齊,va用于垂直對齊。x和y所指向的圖坐標(biāo)是從圖的左下角開始的0到1之間的數(shù)字。suptitle的默認(rèn)值是x=0.5和y=0.98,這使得它位于頂部和中間。

fig.suptitle("Suptitle", fnotallow=20)
 fig.supylabel("Supylabel", fnotallow=16)
 fig.supxlabel("Supxlabel", fnotallow=16)

子的圖例legends

圖例是子圖中的輔助框,它告訴我們哪些數(shù)據(jù)點(diǎn)屬于哪個(gè)邏輯組。當(dāng)在單個(gè)子圖中有多條線、多組標(biāo)記等時(shí),它們尤其有用。當(dāng)調(diào)用ax.legend()時(shí),每個(gè)沒有以下劃線開頭的標(biāo)簽且包含在軸對象中的藝術(shù)家都會生成一個(gè)軸圖例條目。像ax.scatter()和ax.plot()這樣的繪圖函數(shù)將label作為參數(shù),默認(rèn)情況下,這是創(chuàng)建圖例時(shí)使用的標(biāo)簽。

ax.scatter(
  np.random.random(30) * 0.45 + 0.3,
  np.random.random(30) * 0.45 + 0.3,
  label="label for data",
  alpha=0.3,
 )
 ax.legend(title=f"Legend {i} title", fnotallow=8)

如果子圖包含多個(gè)軸,例如當(dāng)調(diào)用ax.twinx()時(shí),需要在繪制圖例之前收集對藝術(shù)家的引用并將它們組合起來,以避免在同一子圖中繪制兩個(gè)圖例。

lines_ax = ax.get_lines() 
 lines_ax2 = ax2.get_lines() 
 
 lines = lines_ax + lines_ax2 
 labels = [line.get_label() for line in lines]
 
 ax.legend(lines, labels, title=f"Legend {i} title", fnotallow=8)

總結(jié)

通過上面的介紹,我們應(yīng)該對這幾個(gè)術(shù)語有了一定了解,那么我們來看看下面的代碼

import matplotlib.pyplot as plt
 import numpy as np
 
 fig, axs = plt.subplots(
  nrows=2, ncols=2, figsize=(10, 7), 
  sharex=True, sharey=True, squeeze=True
 )
 
 i = 1
 for ax in [item for sublist in axs for item in sublist]:
  ax.set_xlabel(f"xlabel {i}")
  ax.scatter(
    np.random.random(30) * 0.45 + 0.3,
    np.random.random(30) * 0.45 + 0.3,
    label="label for data",
    alpha=0.3,
  )
  ax.legend(title=f"Legend {i} title", fnotallow=8)
  ax.set_xlim(0, 1)
  ax.set_ylim(0, 1)
  ax.set_title(f"Title {i} left", loc="left", fnotallow=8)
  ax.set_title(f"Title {i} right", loc="right", fnotallow=10)
  ax.set_title(f"Title {i} center", loc="center", fnotallow=14)
 
  ax.tick_params(labelleft=False, labelbottom=False)
  ax.set_ylabel(f"ylabel {i}")
  i += 1
 
 fig.suptitle("Suptitle", fnotallow=20)
 fig.supylabel("Supylabel", fnotallow=16)
 fig.supxlabel("Supxlabel", fnotallow=16)
 
 plt.tight_layout()
 plt.savefig("fig.png", dpi=200)

這就是繪制最上面圖的代碼,我們再把圖展示一下,這樣可以更加直觀:

責(zé)任編輯:華軒 來源: DeepHub IMBA
相關(guān)推薦

2010-09-09 09:34:32

DIV

2022-10-18 23:53:20

Python數(shù)據(jù)Matplotlib

2009-06-05 10:12:36

Struts標(biāo)簽庫HTML標(biāo)簽

2021-01-27 05:30:28

前端筆記標(biāo)簽

2011-05-10 17:38:23

SEO標(biāo)題標(biāo)簽

2010-01-04 20:10:43

MPLS

2009-12-30 15:56:09

MPLS網(wǎng)絡(luò)

2010-08-31 12:42:22

CSS a標(biāo)簽

2010-07-08 16:48:37

UML包圖

2012-03-19 16:27:05

JavaHibernate

2020-09-16 10:12:42

數(shù)據(jù)分析R代碼

2024-12-25 16:35:53

2020-05-25 15:00:41

matplotlibplot()折線圖

2024-07-01 08:51:19

可視化數(shù)據(jù)分析漏斗

2009-07-10 21:14:53

綜合布線標(biāo)簽

2023-11-30 20:51:26

多子圖布局matplotlib

2010-09-26 13:39:46

JVM調(diào)優(yōu)

2010-06-12 16:16:47

UML設(shè)計(jì)

2009-08-04 13:41:31

2022-10-17 16:17:24

機(jī)器學(xué)習(xí)算法標(biāo)簽傳播
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號