第四回:文字圖例盡眉目
一、Figure和Axes上的文字
Matplotlib具有廣泛的文字支援,包括對數學表示式的支援、對柵格和向量輸出的TrueType支援、具有任意旋轉的換行分隔文字以及Unicode支援。
下面的命令是介紹了通過pyplot API和objected-oriented API分別建立文字的方式。
pyplot API | OO API | description |
---|---|---|
text | text | 在 Axes 的任意位置新增text。 |
title | set_title | 在 Axes 新增title |
figtext | text | 在Figure 的任意位置新增text. |
suptitle | suptitle | 在 Figure 新增title |
xlabel | set_xlabel | 在Axes 的x-axis新增label |
ylabel | set_ylabel | 在Axes 的y-axis新增label |
annotate | annotate | 向Axes 的任意位置新增帶有可選箭頭的標註. |
1.text
pyplot API:matplotlib.pyplot.text(x, y, s, fontdict=None, **kwargs)
OO API:Axes.text(self, x, y, s, fontdict=None, **kwargs)
引數:此方法接受以下描述的引數:
s:此引數是要新增的文字。
xy:此引數是放置文字的點(x,y)。
fontdict:此引數是一個可選引數,並且是一個覆蓋預設文字屬性的字典。如果fontdict為None,則由rcParams確定預設值。
返回值:此方法返回作為建立的文字例項的文字。
fontdict主要引數具體介紹,更多引數請參考官網說明:
Property | Description |
---|---|
alpha | float or None 該引數指透明度,越接近0越透明,越接近1越不透明 |
backgroundcolor | color 該引數指文字的背景顏色,具體matplotlib支援顏色如下 |
bbox | dict with properties for patches.FancyBboxPatch 這個是用來設定text周圍的box外框 |
color or c | color 指的是字型的顏色 |
fontfamily or family | {FONTNAME, ‘serif’, ‘sans-serif’, ‘cursive’, ‘fantasy’, ‘monospace’} 該引數指的是字型的型別 |
fontproperties or font or font_properties | font_manager.FontProperties or str or pathlib.Path |
fontsize or size | float or {‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’} 該引數指字型大小 |
fontstretch or stretch | {a numeric value in range 0-1000, ‘ultra-condensed’, ‘extra-condensed’, ‘condensed’, ‘semi-condensed’, ‘normal’, ‘semi-expanded’, ‘expanded’, ‘extra-expanded’, ‘ultra-expanded’} 該引數是指從字型中選擇正常、壓縮或擴充套件的字型 |
fontstyle or style | {‘normal’, ‘italic’, ‘oblique’} 該引數是指字型的樣式是否傾斜等 |
fontweight or weight | {a numeric value in range 0-1000, ‘ultralight’, ‘light’, ‘normal’, ‘regular’, ‘book’, ‘medium’, ‘roman’, ‘semibold’, ‘demibold’, ‘demi’, ‘bold’, ‘heavy’, ‘extra bold’, ‘black’} |
horizontalalignment or ha | {‘center’, ‘right’, ‘left’} 該引數是指選擇文字左對齊右對齊還是居中對齊 |
label | object |
linespacing | float (multiple of font size) |
position | (float, float) |
rotation | float or {‘vertical’, ‘horizontal’} 該引數是指text逆時針旋轉的角度,“horizontal”等於0,“vertical”等於90。我們可以根據自己設定來選擇合適角度 |
verticalalignment or va | {‘center’, ‘top’, ‘bottom’, ‘baseline’, ‘center_baseline’} |
|
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
import numpy as np
#fontdict學習的案例
#學習的過程中請嘗試更換不同的fontdict字典的內容,以便於更好的掌握
#---------設定字型樣式,分別是字型,顏色,寬度,大小
font1 = {'family': 'SimSun',#華文楷體
'alpha':0.7,#透明度
'color': 'purple',
'weight': 'normal',
'size': 16,
}
font2 = {'family': 'Times New Roman',
'color': 'red',
'weight': 'normal',
'size': 16,
}
font3 = {'family': 'serif',
'color': 'blue',
'weight': 'bold',
'size': 14,
}
font4 = {'family': 'Calibri',
'color': 'navy',
'weight': 'normal',
'size': 17,
}
#-----------四種不同字型顯示風格-----
#-------建立函式----------
x = np.linspace(0.0, 5.0, 100)
y = np.cos(2*np.pi*x) * np.exp(-x/3)
#-------繪製影像,新增標註----------
plt.plot(x, y, '--')
plt.title('震盪曲線', fontdict=font1)
#------新增文字在指定的座標處------------
plt.text(2, 0.65, r'$\cos(2 \pi x) \exp(-x/3)$', fontdict=font2)
#---------設定座標標籤
plt.xlabel('Y=time (s)', fontdict=font3)
plt.ylabel('X=voltage(mv)', fontdict=font4)
# 調整影像邊距
plt.subplots_adjust(left=0.15)
plt.show()
2.title和set_title
pyplot API:matplotlib.pyplot.title(label, fontdict=None, loc=None, pad=None, *, y=None, **kwargs)
OO API:Axes.set_title(self, label, fontdict=None, loc=None, pad=None, *, y=None, **kwargs)
該命令是用來設定axes的標題。
引數:此方法接受以下描述的引數:
label:str,此引數是要新增的文字
fontdict:dict,此引數是控制title文字的外觀,預設fontdict如下:
{'fontsize': rcParams['axes.titlesize'],
'fontweight': rcParams['axes.titleweight'],
'color': rcParams['axes.titlecolor'],
'verticalalignment': 'baseline',
'horizontalalignment': loc}
loc:str,{‘center’, ‘left’, ‘right’}預設為center
pad:float,該引數是指標題偏離圖表頂部的距離,預設為6。
y:float,該引數是title所在axes垂向的位置。預設值為1,即title位於axes的頂部。
kwargs:該引數是指可以設定的一些奇特文字的屬性。
返回值:此方法返回作為建立的title例項的文字。
3.figtext和text
pyplot API:matplotlib.pyplot.figtext(x, y, s, fontdict=None, **kwargs)
OO API:text(self, x, y, s, fontdict=None,**kwargs)
引數:此方法接受以下描述的引數:
x,y:float,此引數是指在figure中放置文字的位置。一般取值是在[0,1]範圍內。使用transform關鍵字可以更改座標系。
s:str,此引數是指文字
fontdict:dict,此引數是一個可選引數,並且是一個覆蓋預設文字屬性的字典。如果fontdict為None,則由rcParams確定預設值。
返回值:此方法返回作為建立的文字例項的文字。
4.suptitle
pyplot API:matplotlib.pyplot.suptitle(t, **kwargs)
OO API:suptitle(self, t, **kwargs)
引數:此方法接受以下描述的引數:
t: str,標題的文字
x:float,預設值是0.5.該引數是指文字在figure座標系下的x座標
y:float,預設值是0.95.該引數是指文字在figure座標系下的y座標
horizontalalignment, ha:該引數是指選擇文字水平對齊方式,有三種選擇{‘center’, ‘left’, right’},預設值是 ‘center’
verticalalignment, va:該引數是指選擇文字垂直對齊方式,有四種選擇{‘top’, ‘center’, ‘bottom’, ‘baseline’},預設值是 ‘top’
fontsize, size:該引數是指文字的大小,預設值是依據rcParams的設定:rcParams[“figure.titlesize”] (default: ‘large’)
fontweight, weight:該引數是用來設定字重。預設值是依據rcParams的設定:rcParams[“figure.titleweight”] (default: ‘normal’)
fontproperties:None or dict,該引數是可選引數,如果該引數被指定,字型的大小將從該引數的預設值中提取。
返回值:此方法返回作為建立的title例項的文字。
5.xlabel和ylabel
pyplot API:matplotlib.pyplot.xlabel(xlabel, fontdict=None, labelpad=None, *, loc=None, **kwargs)
matplotlib.pyplot.ylabel(ylabel, fontdict=None, labelpad=None,*, loc=None, **kwargs)
OO API: Axes.set_xlabel(self, xlabel, fontdict=None, labelpad=None, *, loc=None, **kwargs)
Axes.set_ylabel(self, ylabel, fontdict=None, labelpad=None,*, loc=None, **kwargs)
引數:此方法接受以下描述的引數:
xlabel或者ylabel:label的文字
labelpad:設定label距離軸(axis)的距離
loc:{‘left’, ‘center’, ‘right’},預設為center
**kwargs:文字屬性
返回值:此方法返回作為建立的xlabel和ylabel例項的文字。
#文字屬性的輸入一種是通過**kwargs屬性這種方式,一種是通過操作 matplotlib.font_manager.FontProperties 方法
#該案例中對於x_label採用**kwargs調整字型屬性,y_label則採用 matplotlib.font_manager.FontProperties 方法調整字型屬性
#該連結是FontProperties方法的介紹 https://matplotlib.org/api/font_manager_api.html#matplotlib.font_manager.FontProperties
x1 = np.linspace(0.0, 5.0, 100)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
font = FontProperties()
font.set_family('serif')
font.set_name('Times New Roman')
font.set_style('italic')
fig, ax = plt.subplots(figsize=(5, 3))
fig.subplots_adjust(bottom=0.15, left=0.2)
ax.plot(x1, y1)
ax.set_xlabel('time [s]', fontsize='large', fontweight='bold')
ax.set_ylabel('Damped oscillation [V]', fontproperties=font)
plt.show()
6.annotate
pyplot API:matplotlib.pyplot.annotate(text, xy, *args,**kwargs)
OO API:Axes.annotate(self, text, xy, *args,**kwargs)
引數:此方法接受以下描述的引數:
text:str,該引數是指註釋文字的內容
xy:該引數接受二維元組(float, float),是指要註釋的點。其二維元組所在的座標系由xycoords引數決定
xytext:註釋文字的座標點,也是二維元組,預設與xy相同
xycoords:該引數接受 被註釋點的座標系屬性,允許的輸入值如下:
屬性值 | 含義 |
---|---|
‘figure points’ | 以繪圖區左下角為參考,單位是點數 |
‘figure pixels’ | 以繪圖區左下角為參考,單位是畫素數 |
‘figure fraction’ | 以繪圖區左下角為參考,單位是百分比 |
‘axes points’ | 以子繪圖區左下角為參考,單位是點數(一個figure可以有多個axes,預設為1個) |
‘axes pixels’ | 以子繪圖區左下角為參考,單位是畫素數 |
‘axes fraction’ | 以子繪圖區左下角為參考,單位是百分比 |
‘data’ | 以被註釋的座標點xy為參考 (預設值) |
‘polar’ | 不使用本地資料座標系,使用極座標系 |
textcoords :註釋文字的座標系屬性,預設與xycoords屬性值相同,也可設為不同的值。除了允許輸入xycoords的屬性值,還允許輸入以下兩種:
屬性值 | 含義 |
---|---|
‘offset points’ | 相對於被註釋點xy的偏移量(單位是點) |
‘offset pixels’ | 相對於被註釋點xy的偏移量(單位是畫素) |
arrowprops:箭頭的樣式,dict(字典)型資料,如果該屬性非空,則會在註釋文字和被註釋點之間畫一個箭頭。如果不設定'arrowstyle'
關鍵字,則允許包含以下關鍵字:
關鍵字 | 說明 |
---|---|
width | 箭頭的寬度(單位是點) |
headwidth | 箭頭頭部的寬度(點) |
headlength | 箭頭頭部的長度(點) |
shrink | 箭頭兩端收縮的百分比(佔總長) |
? | 任何 matplotlib.patches.FancyArrowPatch中的關鍵字 |
如果設定了‘arrowstyle’關鍵字,以上關鍵字就不能使用。允許的值有:
箭頭的樣式 | 屬性 |
---|---|
'-' | None |
'->' | head_length=0.4,head_width=0.2 |
'-[' | widthB=1.0,lengthB=0.2,angleB=None |
'|-|' | widthA=1.0,widthB=1.0 |
'-|>' | head_length=0.4,head_width=0.2 |
'<-' | head_length=0.4,head_width=0.2 |
'<->' | head_length=0.4,head_width=0.2 |
'<|-' | head_length=0.4,head_width=0.2 |
'<|-|>' | head_length=0.4,head_width=0.2 |
'fancy' | head_length=0.4,head_width=0.4,tail_width=0.4 |
'simple' | head_length=0.5,head_width=0.5,tail_width=0.2 |
'wedge' | tail_width=0.3,shrink_factor=0.5 |
下圖展現了不同的arrowstyle的不同形式
FancyArrowPatch的關鍵字包括:
Key | Description |
---|---|
arrowstyle | 箭頭的樣式 |
connectionstyle | 連線線的樣式 |
relpos | 箭頭起始點相對註釋文字的位置,預設為 (0.5, 0.5),即文字的中心,(0,0)表示左下角,(1,1)表示右上角 |
patchA | 箭頭起點處的圖形(matplotlib.patches物件),預設是註釋文字框 |
patchB | 箭頭終點處的圖形(matplotlib.patches物件),預設為空 |
shrinkA | 箭頭起點的縮排點數,預設為2 |
shrinkB | 箭頭終點的縮排點數,預設為2 |
mutation_scale | default is text size (in points) |
mutation_aspect | default is 1. |
? | any key for matplotlib.patches.PathPatch |
annotation_clip : 布林值,可選引數,預設為空。設為True時,只有被註釋點在axes時才繪製註釋;設為False時,無論被註釋點在哪裡都繪製註釋。僅當xycoords為‘data’時,預設值空相當於True。
**kwargs:該引數接受任何Text的引數
#此程式碼主要給示範了不同的arrowstyle以及FancyArrowPatch的樣式
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
fig, axs = plt.subplots(2, 2)
x1, y1 = 0.3, 0.3
x2, y2 = 0.7, 0.7
ax = axs.flat[0]
ax.plot([x1, x2], [y1, y2], ".")
el = mpatches.Ellipse((x1, y1), 0.3, 0.4, angle=30, alpha=0.2)
ax.add_artist(el)#在axes中建立一個artist
ax.annotate("",
xy=(x1, y1), xycoords='data',
xytext=(x2, y2), textcoords='data',
arrowprops=dict(arrowstyle="-",#箭頭的樣式
color="0.5",
patchB=None,
shrinkB=0,
connectionstyle="arc3,rad=0.3",
),
)
#在整個程式碼中使用Transform=ax.transAx表示座標相對於axes的bounding box,其中(0,0)是軸的左下角,(1,1)是右上角。
ax.text(.05, .95, "connect", transform=ax.transAxes, ha="left", va="top")
ax = axs.flat[1]
ax.plot([x1, x2], [y1, y2], ".")
el = mpatches.Ellipse((x1, y1), 0.3, 0.4, angle=30, alpha=0.2)
ax.add_artist(el)
ax.annotate("",
xy=(x1, y1), xycoords='data',
xytext=(x2, y2), textcoords='data',
arrowprops=dict(arrowstyle="-",
color="0.5",
patchB=el,#箭頭終點處的圖形
shrinkB=0,
connectionstyle="arc3,rad=0.3",
),
)
ax.text(.05, .95, "clip", transform=ax.transAxes, ha="left", va="top")
ax = axs.flat[2]
ax.plot([x1, x2], [y1, y2], ".")
el = mpatches.Ellipse((x1, y1), 0.3, 0.4, angle=30, alpha=0.2)
ax.add_artist(el)
ax.annotate("",
xy=(x1, y1), xycoords='data',
xytext=(x2, y2), textcoords='data',
arrowprops=dict(arrowstyle="-",
color="0.5",
patchB=el,
shrinkB=5,
connectionstyle="arc3,rad=0.3",
),
)
ax.text(.05, .95, "shrink", transform=ax.transAxes, ha="left", va="top")
ax = axs.flat[3]
ax.plot([x1, x2], [y1, y2], ".")
el = mpatches.Ellipse((x1, y1), 0.3, 0.4, angle=30, alpha=0.2)
ax.add_artist(el)
ax.annotate("",
xy=(x1, y1), xycoords='data',
xytext=(x2, y2), textcoords='data',
arrowprops=dict(arrowstyle="fancy",
color="0.5",
patchB=el,
shrinkB=5,#箭頭終點的縮排點數
connectionstyle="arc3,rad=0.3",
),
)
ax.text(.05, .95, "mutate", transform=ax.transAxes, ha="left", va="top")
for ax in axs.flat:
ax.set(xlim=(0, 1), ylim=(0, 1), xticks=[], yticks=[], aspect=1)
plt.show()
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-Iz7Nfw45-1608618784024)(output_14_0.png)]
兩個點之間的連線路徑主要有connectionstyle和以下樣式確定
Name | Attrs |
---|---|
angle | angleA=90,angleB=0,rad=0.0 |
angle3 | angleA=90,angleB=0 |
arc | angleA=0,angleB=0,armA=None,armB=None,rad=0.0 |
arc3 | rad=0.0 |
bar | armA=0.0,armB=0.0,fraction=0.3,angle=None |
其中angle3 和 arc3 中的 3 意味著所得到的路徑是二次樣條段( 三個控制點)
下面的例子豐富的展現了連線線的用法,可以參考學習
import matplotlib.pyplot as plt
def demo_con_style(ax, connectionstyle):
x1, y1 = 0.3, 0.2
x2, y2 = 0.8, 0.6
ax.plot([x1, x2], [y1, y2], ".")
ax.annotate("",
xy=(x1, y1), xycoords='data',
xytext=(x2, y2), textcoords='data',
arrowprops=dict(arrowstyle="->", color="0.5",
shrinkA=5, shrinkB=5,
patchA=None, patchB=None,
connectionstyle=connectionstyle,
),
)
ax.text(.05, .95, connectionstyle.replace(",", ",\n"),
transform=ax.transAxes, ha="left", va="top")
fig, axs = plt.subplots(3, 5, figsize=(8, 4.8))
demo_con_style(axs[0, 0], "angle3,angleA=90,angleB=0")
demo_con_style(axs[1, 0], "angle3,angleA=0,angleB=90")
demo_con_style(axs[0, 1], "arc3,rad=0.")
demo_con_style(axs[1, 1], "arc3,rad=0.3")
demo_con_style(axs[2, 1], "arc3,rad=-0.3")
demo_con_style(axs[0, 2], "angle,angleA=-90,angleB=180,rad=0")
demo_con_style(axs[1, 2], "angle,angleA=-90,angleB=180,rad=5")
demo_con_style(axs[2, 2], "angle,angleA=-90,angleB=10,rad=5")
demo_con_style(axs[0, 3], "arc,angleA=-90,angleB=0,armA=30,armB=30,rad=0")
demo_con_style(axs[1, 3], "arc,angleA=-90,angleB=0,armA=30,armB=30,rad=5")
demo_con_style(axs[2, 3], "arc,angleA=-90,angleB=0,armA=0,armB=40,rad=0")
demo_con_style(axs[0, 4], "bar,fraction=0.3")
demo_con_style(axs[1, 4], "bar,fraction=-0.3")
demo_con_style(axs[2, 4], "bar,angle=180,fraction=-0.2")
for ax in axs.flat:
ax.set(xlim=(0, 1), ylim=(0, 1), xticks=[], yticks=[], aspect=1)
fig.tight_layout(pad=0.2)
plt.show()
#以下兩個block懂了之後,annotate基本懂了
#如果想更深入學習可以參看官網案例學習https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.annotate.html#matplotlib.axes.Axes.annotate
import numpy as np
import matplotlib.pyplot as plt
# 以步長0.005繪製一個曲線
x = np.arange(0, 10, 0.005)
y = np.exp(-x/2.) * np.sin(2*np.pi*x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlim(0, 10)#設定x軸的範圍
ax.set_ylim(-1, 1)#設定x軸的範圍
# 被註釋點的資料軸座標和所在的畫素
xdata, ydata = 5, 0
xdisplay, ydisplay = ax.transData.transform_point((xdata, ydata))
# 設定註釋文字的樣式和箭頭的樣式
bbox = dict(boxstyle="round", fc="0.8")
arrowprops = dict(
arrowstyle = "->",
connectionstyle = "angle,angleA=0,angleB=90,rad=10")
# 設定偏移量
offset = 72
# xycoords預設為'data'資料軸座標,對座標點(5,0)新增註釋
# 註釋文字參考被註釋點設定偏移量,向左2*72points,向上72points
ax.annotate('data = (%.1f, %.1f)'%(xdata, ydata),
(xdata, ydata), xytext=(-2*offset, offset), textcoords='offset points',
bbox=bbox, arrowprops=arrowprops)
# xycoords以繪圖區左下角為參考,單位為畫素
# 註釋文字參考被註釋點設定偏移量,向右0.5*72points,向下72points
disp = ax.annotate('display = (%.1f, %.1f)'%(xdisplay, ydisplay),
(xdisplay, ydisplay), xytext=(0.5*offset, -offset),
xycoords='figure pixels',
textcoords='offset points',
bbox=bbox, arrowprops=arrowprops)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
# 繪製一個極地座標,再以0.001為步長,畫一條螺旋曲線
fig = plt.figure()
ax = fig.add_subplot(111, polar=True)
r = np.arange(0,1,0.001)
theta = 2 * 2*np.pi * r
line, = ax.plot(theta, r, color='#ee8d18', lw=3)
# 對索引為800處畫一個圓點,並做註釋
ind = 800
thisr, thistheta = r[ind], theta[ind]
ax.plot([thistheta], [thisr], 'o')
ax.annotate('a polar annotation',
xy=(thistheta, thisr), # 被註釋點遵循極座標系,座標為角度和半徑
xytext=(0.05, 0.05), # 註釋文字放在繪圖區的0.05百分比處
textcoords='figure fraction',
arrowprops=dict(facecolor='black', shrink=0.05),# 箭頭線為黑色,兩端縮排5%
horizontalalignment='left',# 註釋文字的左端和低端對齊到指定位置
verticalalignment='bottom',
)
plt.show()
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-01qNlzQd-1608618784031)(output_18_0.png)]
7.字型的屬性設定
字型設定一般有全域性字型設定和自定義區域性字型設定兩種方法。
#首先可以檢視matplotlib所有可用的字型
from matplotlib import font_manager
font_family = font_manager.fontManager.ttflist
font_name_list = [i.name for i in font_family]
for font in font_name_list:
print(f'{font}\n')
cmmi10
DejaVu Sans Mono
DejaVu Sans
STIXSizeFourSym
DejaVu Sans Display
DejaVu Serif
STIXGeneral
STIXNonUnicode
STIXSizeFourSym
STIXSizeThreeSym
STIXGeneral
cmr10
STIXNonUnicode
cmsy10
DejaVu Sans
STIXSizeFiveSym
DejaVu Sans
STIXSizeThreeSym
DejaVu Serif Display
DejaVu Sans
cmex10
DejaVu Sans Mono
STIXNonUnicode
STIXSizeOneSym
STIXSizeTwoSym
DejaVu Serif
STIXNonUnicode
cmb10
STIXGeneral
STIXGeneral
DejaVu Serif
STIXSizeOneSym
cmss10
STIXSizeTwoSym
cmtt10
DejaVu Sans Mono
DejaVu Serif
DejaVu Sans Mono
Elephant
Trebuchet MS
Dubai
Microsoft New Tai Lue
Ravie
Verdana
Elephant
Microsoft Tai Le
Book Antiqua
Gill Sans MT Ext Condensed Bold
Nirmala UI
Segoe UI
FZShuTi
Lucida Fax
Eras Demi ITC
STHupo
Constantia
Ebrima
Symbol
DengXian
MS Reference Sans Serif
Yu Gothic
Tahoma
Arial
Agency FB
Corbel
Javanese Text
Castellar
Lucida Sans
FZYaoTi
Lucida Sans
Tahoma
Lucida Sans Typewriter
Gill Sans Ultra Bold Condensed
STZhongsong
Palatino Linotype
Algerian
Matura MT Script Capitals
Franklin Gothic Demi
Cooper Black
Lucida Handwriting
Mistral
Sitka Small
Lucida Bright
Bodoni MT
Parchment
Perpetua Titling MT
Segoe UI
Brush Script MT
Freestyle Script
Calibri
Colonna MT
Century Schoolbook
Georgia
Tw Cen MT
Lucida Bright
Gadugi
Constantia
STFangsong
Sitka Small
Gill Sans MT
DejaVu Sans Mono
Calisto MT
Century Schoolbook
Bodoni MT
Mongolian Baiti
Lucida Sans Typewriter
Berlin Sans FB
Perpetua
Lucida Fax
Century Gothic
Gill Sans MT
Times New Roman
Gadugi
Rockwell
Segoe Script
FangSong
Sitka Small
Papyrus
Californian FB
Microsoft YaHei
High Tower Text
Leelawadee
Rockwell Extra Bold
Bodoni MT
Microsoft JhengHei
Times New Roman
Lucida Fax
Microsoft Uighur
Rage Italic
Cambria
Trebuchet MS
Yu Gothic
Perpetua
Bodoni MT
Tw Cen MT Condensed Extra Bold
Segoe UI
Wingdings 3
Segoe UI
Calisto MT
Century Gothic
Arial Rounded MT Bold
Candara
STSong
Maiandra GD
Microsoft Uighur
Engravers MT
Vladimir Script
DengXian
Palatino Linotype
Calibri
Gigi
Book Antiqua
Bernard MT Condensed
Comic Sans MS
Bodoni MT
Modern No. 20
Britannic Bold
Nirmala UI
Haettenschweiler
Book Antiqua
Californian FB
Times New Roman
Calisto MT
Segoe UI
Segoe Print
Franklin Gothic Medium
Bookman Old Style
Lucida Sans Unicode
Consolas
Segoe UI
STKaiti
Monotype Corsiva
Microsoft PhagsPa
Onyx
Sitka Small
DejaVu Sans Mono
Trebuchet MS
Vivaldi
Arial
Franklin Gothic Medium
Bookman Old Style
Bradley Hand ITC
Segoe MDL2 Assets
Centaur
Times New Roman
Microsoft Sans Serif
Script MT Bold
Lucida Bright
Bodoni MT
Myanmar Text
Cambria
Kristen ITC
Sylfaen
Leelawadee
Rockwell Condensed
Calibri
High Tower Text
Cambria
Wingdings
Courier New
Lucida Calligraphy
MT Extra
Microsoft PhagsPa
Trebuchet MS
Calisto MT
Consolas
Lucida Sans
Calibri
Impact
Segoe UI
Tempus Sans ITC
Verdana
Gill Sans MT
French Script MT
Juice ITC
Dubai
Niagara Solid
Lucida Fax
Bodoni MT
Franklin Gothic Heavy
Goudy Old Style
Bell MT
Comic Sans MS
Arial
Goudy Old Style
Calibri
Lucida Sans Typewriter
Copperplate Gothic Bold
Berlin Sans FB Demi
Garamond
Bell MT
Bookman Old Style
Gloucester MT Extra Condensed
Segoe UI Symbol
Arial
Perpetua
Bodoni MT
Bodoni MT
Harlow Solid Italic
Baskerville Old Face
Georgia
Leelawadee UI
Goudy Stout
Franklin Gothic Book
HoloLens MDL2 Assets
STCaiyun
Webdings
Segoe UI
Arial
Poor Richard
Playbill
Franklin Gothic Medium Cond
STLiti
Bauhaus 93
Microsoft JhengHei
Wide Latin
Corbel
Gill Sans MT
Century
Candara
Corbel
SimSun-ExtB
Lucida Sans
Malgun Gothic
Yu Gothic
Corbel
Chiller
Dubai
Candara
Bell MT
Magneto
Palatino Linotype
LiSu
Informal Roman
Consolas
Century Gothic
Dubai
Book Antiqua
Segoe UI Emoji
Segoe UI
Yu Gothic
Courier New
Harrington
Ebrima
Courier New
Perpetua Titling MT
Segoe UI Historic
Palatino Linotype
Agency FB
Old English Text MT
Lucida Bright
Broadway
Leelawadee UI
Stencil
Microsoft YaHei
Segoe Print
Verdana
Ink Free
DejaVu Sans Mono
Eras Bold ITC
Century Gothic
Arial
MS Outlook
Comic Sans MS
Lucida Sans Typewriter
Curlz MT
Century Schoolbook
Tw Cen MT Condensed
Marlett
Georgia
Georgia
OCR A Extended
Jokerman
Blackadder ITC
Lucida Console
Tw Cen MT
Tw Cen MT Condensed
Bookman Old Style
Showcard Gothic
Kunstler Script
MS Gothic
Comic Sans MS
Copperplate Gothic Light
Perpetua
Californian FB
Candara
MS Reference Specialty
Leelawadee UI
Bookshelf Symbol 7
Franklin Gothic Demi Cond
Microsoft YaHei
Garamond
Niagara Engraved
Bodoni MT
Gill Sans MT Condensed
DengXian
SimSun
Gabriola
Eras Light ITC
Nirmala UI
Candara
KaiTi
Constantia
Bodoni MT
YouYuan
Snap ITC
Viner Hand ITC
MV Boli
Consolas
Palace Script MT
Arial
Century Schoolbook
Berlin Sans FB
Constantia
Pristina
Tw Cen MT
Franklin Gothic Heavy
Arial
Microsoft Tai Le
Franklin Gothic Demi
Tw Cen MT
Corbel
Eras Medium ITC
STXinwei
Cambria
Malgun Gothic
Arial
Garamond
Segoe UI
Malgun Gothic
Footlight MT Light
SimHei
Calibri
Forte
Microsoft Yi Baiti
Verdana
Segoe Script
Rockwell
Segoe UI
Microsoft New Tai Lue
Candara
Franklin Gothic Book
Wingdings 2
Bahnschrift
Imprint MT Shadow
Myanmar Text
Rockwell
STXihei
Rockwell
Edwardian Script ITC
Courier New
Gill Sans Ultra Bold
Microsoft Himalaya
Corbel
Rockwell Condensed
MingLiU-ExtB
Segoe UI
Microsoft JhengHei
STXingkai
Felix Titling
DejaVu Sans Mono
Goudy Old Style
為方便在圖中加入合適的字型,可以嘗試瞭解中文字型的英文名稱,該連結告訴了常用中文的英文名稱
#該block講述如何在matplotlib裡面,修改字型預設屬性,完成全域性字型的更改。
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimSun'] # 指定預設字型為新宋體。
plt.rcParams['axes.unicode_minus'] = False # 解決儲存影像時 負號'-' 顯示為方塊和報錯的問題。
#區域性字型的修改方法1
import matplotlib.pyplot as plt
import matplotlib.font_manager as fontmg
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
plt.plot(x, label='小示例圖示籤')
# 直接用字型的名字。
plt.xlabel('x 軸名稱引數', fontproperties='Microsoft YaHei', fontsize=16) # 設定x軸名稱,採用微軟雅黑字型
plt.ylabel('y 軸名稱引數', fontproperties='Microsoft YaHei', fontsize=14) # 設定Y軸名稱
plt.title('座標系的標題', fontproperties='Microsoft YaHei', fontsize=20) # 設定座標系標題的字型
plt.legend(loc='lower right', prop={"family": 'Microsoft YaHei'}, fontsize=10) # 小示例圖的字型設定
<matplotlib.legend.Legend at 0x1eb0f5e1348>
#區域性字型的修改方法2
import matplotlib.pyplot as plt
import matplotlib.font_manager as fontmg
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
plt.plot(x, label='小示例圖示籤')
#fname為你係統中的字型庫路徑
my_font1 = fontmg.FontProperties(fname=r'C:\Windows\Fonts\simhei.ttf') # 讀取系統中的 黑體 字型。
my_font2 = fontmg.FontProperties(fname=r'C:\Windows\Fonts\simkai.ttf') # 讀取系統中的 楷體 字型。
# fontproperties 設定中文顯示,fontsize 設定字型大小
plt.xlabel('x 軸名稱引數', fontproperties=my_font1, fontsize=16) # 設定x軸名稱
plt.ylabel('y 軸名稱引數', fontproperties=my_font1, fontsize=14) # 設定Y軸名稱
plt.title('座標系的標題', fontproperties=my_font2, fontsize=20) # 標題的字型設定
plt.legend(loc='lower right', prop=my_font1, fontsize=10) # 小示例圖的字型設定
<matplotlib.legend.Legend at 0x1eb0f62bf08>
8.數學表示式
在文字標籤中使用數學表示式。有關MathText的概述,請參見 寫數學表示式,但由於數學表示式的練習想必我們都在markdown語法和latex語法中多少有接觸,故在此不繼續展開,願意深入學習的可以參看官方文件.下面是一個官方案例,供參考瞭解。
import numpy as np
import matplotlib.pyplot as plt
t = np.arange(0.0, 2.0, 0.01)
s = np.sin(2*np.pi*t)
plt.plot(t, s)
plt.title(r'$\alpha_i > \beta_i$', fontsize=20)
plt.text(1, -0.6, r'$\sum_{i=0}^\infty x_i$', fontsize=20)
plt.text(0.6, 0.6, r'$\mathcal{A}\mathrm{sin}(2 \omega t)$',
fontsize=20)
plt.xlabel('time (s)')
plt.ylabel('volts (mV)')
plt.show()
#這是對前七節學習內容的總結案例
import matplotlib
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
fig.subplots_adjust(top=0.85)
# 分別在figure和subplot上設定title
fig.suptitle('bold figure suptitle', fontsize=14, fontweight='bold')
ax.set_title('axes title')
ax.set_xlabel('xlabel')
ax.set_ylabel('ylabel')
# 設定x-axis和y-axis的範圍都是[0, 10]
ax.axis([0, 10, 0, 10])
ax.text(3, 8, 'boxed italics text in data coords', style='italic',
bbox={'facecolor': 'red', 'alpha': 0.5, 'pad': 10})
ax.text(2, 6, r'an equation: $E=mc^2$', fontsize=15)
font1 = {'family': 'Times New Roman',
'color': 'purple',
'weight': 'normal',
'size': 10,
}
ax.text(3, 2, 'unicode: Institut für Festkörperphysik',fontdict=font1)
ax.text(0.95, 0.01, 'colored text in axes coords',
verticalalignment='bottom', horizontalalignment='right',
transform=ax.transAxes,
color='green', fontsize=15)
ax.plot([2], [1], 'o')
ax.annotate('annotate', xy=(2, 1), xytext=(3, 4),
arrowprops=dict(facecolor='black', shrink=0.05))
plt.show()
二、Tick上的文字
設定tick(刻度)和ticklabel(刻度標籤)也是視覺化中經常需要操作的步驟,matplotlib既提供了自動生成刻度和刻度標籤的模式(預設狀態),同時也提供了許多讓使用者靈活設定的方式。
1.簡單模式
可以使用axis的set_ticks
方法手動設定標籤位置,使用axis的set_ticklabels
方法手動設定標籤格式
import matplotlib.pyplot as plt
import numpy as np
import matplotlib
x1 = np.linspace(0.0, 5.0, 100)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
# 使用axis的set_ticks方法手動設定標籤位置的例子,該案例中由於tick設定過大,所以會影響繪圖美觀,不建議用此方式進行設定tick
fig, axs = plt.subplots(2, 1, figsize=(5, 3), tight_layout=True)
axs[0].plot(x1, y1)
axs[1].plot(x1, y1)
axs[1].xaxis.set_ticks(np.arange(0., 10.1, 2.))
plt.show()
# 使用axis的set_ticklabels方法手動設定標籤格式的例子
fig, axs = plt.subplots(2, 1, figsize=(5, 3), tight_layout=True)
axs[0].plot(x1, y1)
axs[1].plot(x1, y1)
ticks = np.arange(0., 8.1, 2.)
tickla = [f'{tick:1.2f}' for tick in ticks]
axs[1].xaxis.set_ticks(ticks)
axs[1].xaxis.set_ticklabels(tickla)
plt.show()
#一般繪圖時會自動建立刻度,而如果通過上面的例子使用set_ticks建立刻度可能會導致tick的範圍與所繪製圖形的範圍不一致的問題。
#所以在下面的案例中,axs[1]中set_xtick的設定要與資料範圍所對應,然後再通過set_xticklabels設定刻度所對應的標籤
import numpy as np
import matplotlib.pyplot as plt
fig, axs = plt.subplots(2, 1, figsize=(6, 4), tight_layout=True)
x1 = np.linspace(0.0, 6.0, 100)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
axs[0].plot(x1, y1)
axs[0].set_xticks([0,1,2,3,4,5,6])
axs[1].plot(x1, y1)
axs[1].set_xticks([0,1,2,3,4,5,6])#要將x軸的刻度放在資料範圍中的哪些位置
axs[1].set_xticklabels(['zero','one', 'two', 'three', 'four', 'five','six'],#設定刻度對應的標籤
rotation=30, fontsize='small')#rotation選項設定x刻度標籤傾斜30度。
axs[1].xaxis.set_ticks_position('bottom')#set_ticks_position()方法是用來設定刻度所在的位置,常用的引數有bottom、top、both、none
print(axs[1].xaxis.get_ticklines())
plt.show()
<a list of 14 Line2D ticklines objects>
2.Tick Locators and Formatters
除了上述的簡單模式,還可以使用Tick Locators and Formatters
完成對於刻度位置和刻度標籤的設定。
其中Axis.set_major_locator和Axis.set_minor_locator方法用來設定標籤的位置,Axis.set_major_formatter和Axis.set_minor_formatter方法用來設定標籤的格式。這種方式的好處是不用顯式地列舉出刻度值列表。
set_major_formatter和set_minor_formatter這兩個formatter格式命令可以接收字串格式(matplotlib.ticker.StrMethodFormatter)或函式引數(matplotlib.ticker.FuncFormatter)來設定刻度值的格式 。
a) Tick Formatters
# 接收字串格式的例子
fig, axs = plt.subplots(2, 2, figsize=(8, 5), tight_layout=True)
for n, ax in enumerate(axs.flat):
ax.plot(x1*10., y1)
formatter = matplotlib.ticker.FormatStrFormatter('%1.1f')
axs[0, 1].xaxis.set_major_formatter(formatter)
formatter = matplotlib.ticker.FormatStrFormatter('-%1.1f')
axs[1, 0].xaxis.set_major_formatter(formatter)
formatter = matplotlib.ticker.FormatStrFormatter('%1.5f')
axs[1, 1].xaxis.set_major_formatter(formatter)
plt.show()
# 接收函式的例子
def formatoddticks(x, pos):
"""Format odd tick positions."""
if x % 2:
return f'{x:1.2f}'
else:
return ''
fig, ax = plt.subplots(figsize=(5, 3), tight_layout=True)
ax.plot(x1, y1)
ax.xaxis.set_major_formatter(formatoddticks)
plt.show()
b) Tick Locators
在普通的繪圖中,我們可以直接通過上圖的set_ticks進行設定刻度的位置,缺點是需要自己指定或者接受matplotlib預設給定的刻度。當需要更改刻度的位置時,matplotlib給了常用的幾種locator的型別。如果要繪製更復雜的圖,可以先設定locator的型別,然後通過axs.xaxis.set_major_locator(locator)繪製即可
locator=plt.MaxNLocator(nbins=7)
locator=plt.FixedLocator(locs=[0,0.5,1.5,2.5,3.5,4.5,5.5,6])#直接指定刻度所在的位置
locator=plt.AutoLocator()#自動分配刻度值的位置
locator=plt.IndexLocator(offset=0.5, base=1)#面元間距是1,從0.5開始
locator=plt.MultipleLocator(1.5)#將刻度的標籤設定為1.5的倍數
locator=plt.LinearLocator(numticks=5)#線性劃分5等分,4個刻度
# 接收各種locator的例子
fig, axs = plt.subplots(2, 2, figsize=(8, 5), tight_layout=True)
for n, ax in enumerate(axs.flat):
ax.plot(x1*10., y1)
locator = matplotlib.ticker.AutoLocator()
axs[0, 0].xaxis.set_major_locator(locator)
locator = matplotlib.ticker.MaxNLocator(nbins=10)
axs[0, 1].xaxis.set_major_locator(locator)
locator = matplotlib.ticker.MultipleLocator(5)
axs[1, 0].xaxis.set_major_locator(locator)
locator = matplotlib.ticker.FixedLocator([0,7,14,21,28])
axs[1, 1].xaxis.set_major_locator(locator)
plt.show()
此外matplotlib.dates
模組還提供了特殊的設定日期型刻度格式和位置的方式
import matplotlib.dates as mdates
import datetime
# 特殊的日期型locator和formatter
locator = mdates.DayLocator(bymonthday=[1,15,25])
formatter = mdates.DateFormatter('%b %d')
fig, ax = plt.subplots(figsize=(5, 3), tight_layout=True)
ax.xaxis.set_major_locator(locator)
ax.xaxis.set_major_formatter(formatter)
base = datetime.datetime(2017, 1, 1, 0, 0, 1)
time = [base + datetime.timedelta(days=x) for x in range(len(x1))]
ax.plot(time, y1)
ax.tick_params(axis='x', rotation=70)
plt.show()
其他案例
#這個案例中展示瞭如何進行座標軸的移動,如何更改刻度值的樣式
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3,3,50)
y1 = 2*x+1
y2 = x**2
plt.figure()
plt.plot(x,y2)
plt.plot(x,y1,color='red',linewidth=1.0,linestyle = '--')
plt.xlim((-3,5))
plt.ylim((-3,5))
plt.xlabel('x')
plt.ylabel('y')
new_ticks1 = np.linspace(-3,5,5)
plt.xticks(new_ticks1)
plt.yticks([-2,0,2,5],[r'$one\ shu$',r'$\alpha$',r'$three$',r'four'])
'''
上一行程式碼是將y軸上的小標改成文字,其中,空格需要增加\,即'\ ',$可將格式更改成數字模式,如果需要輸入數學形式的α,則需要用\轉換,即\alpha
如果使用物件導向的命令進行畫圖,那麼下面兩行程式碼可以實現與 plt.yticks([-2,0,2,5],[r'$one\ shu$',r'$\alpha$',r'$three$',r'four']) 同樣的功能
axs.set_yticks([-2,0,2,5])
axs.set_yticklabels([r'$one\ shu$',r'$\alpha$',r'$three$',r'four'])
'''
ax = plt.gca()#gca = 'get current axes' 獲取現在的軸
'''
ax = plt.gca()是獲取當前的axes,其中gca代表的是get current axes。
fig=plt.gcf是獲取當前的figure,其中gcf代表的是get current figure。
許多函式都是對當前的Figure或Axes物件進行處理,
例如plt.plot()實際上會通過plt.gca()獲得當前的Axes物件ax,然後再呼叫ax.plot()方法實現真正的繪圖。
而在本例中則可以通過ax.spines方法獲得當前頂部和右邊的軸並將其顏色設定為不可見
然後將左邊軸和底部的軸所在的位置重新設定
最後再通過set_ticks_position方法設定ticks在x軸或y軸的位置,本示例中因所設定的bottom和left是ticks在x軸或y軸的預設值,所以這兩行的程式碼也可以不寫
'''
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
ax.spines['left'].set_position(('data',0))
ax.spines['bottom'].set_position(('data',0))#axes 百分比
ax.xaxis.set_ticks_position('bottom') #設定ticks在x軸的位置
ax.yaxis.set_ticks_position('left') #設定ticks在y軸的位置
plt.show()
三、legend(圖例)
圖例的設定會使用一些常見術語,為了清楚起見,這些術語在此處進行說明:
legend entry(圖例條目)
圖例有一個或多個legend entries組成。一個entry由一個key和一個label組成。
legend key(圖例鍵)
每個 legend label左面的colored/patterned marker(彩色/圖案標記)
legend label(圖例標籤)
描述由key來表示的handle的文字
legend handle(圖例控制程式碼)
用於在圖例中生成適當圖例條目的原始物件
以下面這個圖為例,右側的方框中的共有兩個legend entry;兩個legend key,分別是一個藍色和一個黃色的legend key;兩個legend label,一個名為‘Line up’和一個名為‘Line Down’的legend label
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-aaqcXRpC-1608618784045)(attachment:image.png)]
matplotlib.pyplot.legend(*args, **kwargs)
引數:此方法接受以下描述的引數:
keyword | Description |
---|---|
loc | Location code string, or tuple (see below).圖例所有figure位置 |
prop | the font property字型引數 |
fontsize | the font size (used only if prop is not specified) |
markerscale | the relative size of legend markers vs. original圖例標記與原始標記的相對大小 |
markerfirst | If True (default), marker is to left of the label.如果為True,則圖例標記位於圖例標籤的左側 |
numpoints | the number of points in the legend for line為線條圖圖例條目建立的標記點數 |
scatterpoints | the number of points in the legend for scatter plot為散點圖圖例條目建立的標記點數 |
scatteryoffsets | a list of yoffsets for scatter symbols in legend為散點圖圖例條目建立的標記的垂直偏移量 |
frameon | If True, draw the legend on a patch (frame).控制是否應在圖例周圍繪製框架 |
fancybox | If True, draw the frame with a round fancybox.控制是否應在構成圖例背景的FancyBboxPatch周圍啟用圓邊 |
shadow | If True, draw a shadow behind legend.控制是否在圖例後面畫一個陰 |
framealpha | Transparency of the frame.控制圖例框架的 Alpha 透明度 |
edgecolor | Frame edgecolor. |
facecolor | Frame facecolor. |
ncol | number of columns 設定圖例分為n列展示 |
borderpad | the fractional whitespace inside the legend border圖例邊框的內邊距 |
labelspacing | the vertical space between the legend entries圖例條目之間的垂直間距 |
handlelength | the length of the legend handles 圖例控制程式碼的長度 |
handleheight | the height of the legend handles 圖例控制程式碼的高度 |
handletextpad | the pad between the legend handle and text 圖例控制程式碼和文字之間的間距 |
borderaxespad | the pad between the axes and legend border軸與圖例邊框之間的距離 |
columnspacing | the spacing between columns 列間距 |
title | the legend title |
bbox_to_anchor | the bbox that the legend will be anchored.指定圖例在軸的位置 |
bbox_transform | the transform for the bbox. transAxes if None. |
常用的幾個引數:
(1)設定圖列位置
plt.legend(loc=‘upper center’) 等同於plt.legend(loc=9)
0: ‘best’ |
1: ‘upper right’
2: ‘upper left’
3: ‘lower left’ |
4: ‘lower right’
5: ‘right’
6: ‘center left’ |
7: ‘center right’
8: ‘lower center’
9: ‘upper center’
10: ‘center’ |
(2)設定圖例字型大小
fontsize : int or float or {‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’}
(3)設定圖例邊框及背景
plt.legend(loc=‘best’,frameon=False) #去掉圖例邊框
plt.legend(loc=‘best’,edgecolor=‘blue’) #設定圖例邊框顏色
plt.legend(loc=‘best’,facecolor=‘blue’) #設定圖例背景顏色,若無邊框,引數無效
(4)設定圖例標題
legend = plt.legend([“CH”, “US”], title=‘China VS Us’)
(5)設定圖例名字及對應關係
legend = plt.legend([p1, p2], [“CH”, “US”])
line_up, = plt.plot([1, 2, 3], label='Line 2')
line_down, = plt.plot([3, 2, 1], label='Line 1')
plt.legend([line_up, line_down], ['Line Up', 'Line Down'],loc=5, title='line',frameon=False)#loc引數設定圖例所在的位置,title設定圖例的標題,frameon引數將圖例邊框給去掉
<matplotlib.legend.Legend at 0x1eb10938b08>
#這個案例是顯示多圖例legend
import matplotlib.pyplot as plt
import numpy as np
x = np.random.uniform(-1, 1, 4)
y = np.random.uniform(-1, 1, 4)
p1, = plt.plot([1,2,3])
p2, = plt.plot([3,2,1])
l1 = plt.legend([p2, p1], ["line 2", "line 1"], loc='upper left')
p3 = plt.scatter(x[0:2], y[0:2], marker = 'D', color='r')
p4 = plt.scatter(x[2:], y[2:], marker = 'D', color='g')
# 下面這行程式碼由於新增了新的legend,所以會將l1從legend中給移除
plt.legend([p3, p4], ['label', 'label1'], loc='lower right', scatterpoints=1)
# 為了保留之前的l1這個legend,所以必須要通過plt.gca()獲得當前的axes,然後將l1作為單獨的artist
plt.gca().add_artist(l1)
<matplotlib.legend.Legend at 0x1eb0f042148>
作業
1.嘗試在一張圖中運用所講過的功能,對title、text、xlable、ylabel、數學表示式、tick and ticklabel、legend進行詳細的設計.
2.閱讀你可能用到文獻或者相關書籍,思考自己如何才能通過學過的例子將自己認為比較好看的圖給復現出來.
參考資料
相關文章
- 002.02 Tkinter 圖形介面之文字範例
- 百度地圖API圖示、文字、圖例與連線地圖API
- 燃盡圖
- 站立會議和燃盡圖02
- 站立會議和燃盡圖03
- 圖片裁剪-文字識別-文字新增
- PHP 圖片、文字合成PHP
- 【python】圖片插入文字Python
- 初探富文字之OT協同例項
- 初探富文字之CRDT協同例項
- CSS 例項之文字的凸起與凹陷CSS
- UML用例圖
- 從燃盡圖看專案管理:你的專案哪裡出錯了?(燃盡圖型別全解析)專案管理型別
- 故障分析 | MySQL 耗盡主機記憶體一例分析MySql記憶體
- 類載入、物件例項化知識點一網打盡物件
- R語言中繪圖 設定圖例中隱藏圖例的框線R語言繪圖
- 哪個圖片識別文字app能快速轉換圖片成文字?APP
- 文字圖Tranformer在文字分類中的應用ORM文字分類
- Android 動畫詳盡教程 [詳盡!詳盡!]Android動畫
- 識別圖片文字轉換成word文字真的很難嗎?分享圖片轉文字的技巧
- 當前文字框高亮效果程式碼例項
- paddleocr圖片文字識別
- PHP 文字生成點陣圖PHP
- 圖片轉換文字appAPP
- 提取圖片文字的技巧
- MATLAB批量新增圖例Matlab
- Java 讀取Word文字框中的文字/圖片/表格Java
- 【Go語言繪圖】圖片新增文字(二)Go繪圖
- 【Go語言繪圖】圖片新增文字(一)Go繪圖
- 如何免費識別圖片文字?圖片文字識別軟體怎麼用
- win10電腦中怎麼將圖片文字轉換成文字文字Win10
- Vue.js編輯文字--菜鳥教程例項Vue.js
- css多行文字垂直居中程式碼例項CSS
- textarea文字框高度自適應程式碼例項
- Python 提取PDF文字和圖片Python
- Tesseract OCR 圖片文字識別
- 分享:識別圖片文字方法
- CSS聚光燈文字(無圖片)CSS