需要在同一張圖繪制兩條曲線時,調(diào)用兩次plot方法即可翻具,參數(shù)c弦撩、label可以分別指定顏色和標(biāo)簽,legend方法可以繪制圖例
plt.plot(x_values, y_values1, c=’blue’, label=’Women’)
plt.plot(x_values, y_values2, c=’green’, label=’Men’)
plt.legend(loc=’upper right’)
plt.title(‘Percentage of Biology Degrees Awarded By Gender’)
plt.show()
效果如圖:圖片來自:https://www.dataquest.io/m/147/improving-plot-aesthetics/4/visualizing-the-gender-gap
最大化data-ink比
data-ink比即數(shù)據(jù)量和圖標(biāo)構(gòu)成的比例侣诺,比例越大,獲取信息就越直觀氧秘,如圖所示:
Axes.tick_params方法可以去除軸上的標(biāo)記
plt.tick_params(bottom=”off”, top=”off”, left=”off”, right=”off”)
Spine.set_visible()方法可以去除圖表的邊框
fig, ax = plt.subplots()
ax.spines[“right”].set_visible(False)
ax.spines[“l(fā)eft”].set_visible(False)
ax.spines[“top”].set_visible(False)
ax.spines[“bottom”].set_visible(False)
當(dāng)然紧武,這樣寫未免太過麻煩。shines是一個dict敏储。print(ax.spines)結(jié)果如下:
{‘right’: <matplotlib.spines.spine object=”” at=”” 0x111089c18=””>, ‘bottom’: <matplotlib.spines.spine object=”” at=”” 0x111060898=””>, ‘top’: <matplotlib.spines.spine object=”” at=”” 0x1110606a0=””>, ‘left’: <matplotlib.spines.spine object=”” at=”” 0x11107cd30=””>}</matplotlib.spines.spine></matplotlib.spines.spine></matplotlib.spines.spine></matplotlib.spines.spine>
因此阻星,可以用一個for循環(huán)來去除圖表的四邊
for key,spine in ax.spines.items():
spine.set_visible(False)
subplot方法:繪制子圖
subplot將整個繪圖區(qū)域等分為numRows行* numCols列個子區(qū)域,然后按照從左到右已添,從上到下的順序?qū)γ總€子區(qū)域進(jìn)行編號妥箕,左上的子區(qū)域的編號為1。如果numRows更舞,numCols和plotNum這三個數(shù)都小于10的話畦幢,可以把它們縮寫為一個整數(shù),例如subplot(323)和subplot(3,2,3)是相同的缆蝉。subplot在plotNum指定的區(qū)域中創(chuàng)建一個軸對象宇葱。如果新創(chuàng)建的軸和之前創(chuàng)建的軸重疊的話,之前的軸將被刪除刊头。
plt.subplot(numRows, numCols, plotNum)
如果要繪制一個第一行兩張圖黍瞧,第二行一張圖的圖表呢?
plt.subplot(2, 2, 1)
plt.subplot(2, 2, 2)
plt.subplot(2, 1, 2)
也因為subplot方法本身的特性原杂,可以方便的用循環(huán)來繪制連續(xù)的圖表
for i in range(0, 4):
plt.subplot(2, 2, 1 + i)
subplot方法返回兩個值印颤,第一個是圖像對象,第二個則是包含各個子表的元組(tuple)穿肄,所以我們經(jīng)衬昃郑看到這樣的代碼:
fig, ax = plt.subplots()
此外,注意設(shè)置子表的標(biāo)題使用的不是title方法而是set_title方法
ax.set_title(‘a(chǎn) string’)
類似的咸产,設(shè)置坐標(biāo)軸范圍應(yīng)使用set_x(y)lim方法
ax.set_xlim(1, 2)
ax.set_ylim([‘a(chǎn)’, ‘b’, ‘c’])