庫
Matplotlib狸相,numpy
Matplotlib 是一個功能強(qiáng)大的python作圖庫特愿,是一個強(qiáng)大的工具勋拟,可以做出很專業(yè)的圖。主要用到Matplotlib.pyplot 和numpy
下圖是基本要素
畫簡單線性圖示意圖
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-2, 6, 50)
y1 = x + 3 # 曲線 y1
y2 = 3 - x # 曲線 y2
plt.figure() # 定義一個圖像窗口
plt.plot(x, y1) # 繪制曲線 y1
plt.plot(x, y2) # 繪制曲線 y2
plt.show()
簡單修飾
import matplotlib.pyplot as plt
import numpy as np
# 創(chuàng)建一個點(diǎn)數(shù)為 8 x 6 的窗口, 并設(shè)置分辨率為 80像素/每英寸
plt.figure(figsize=(8, 6), dpi=80)
# 再創(chuàng)建一個規(guī)格為 1 x 1 的子圖
plt.subplot(111)
x = np.linspace(-2, 6, 50)
y1 = x + 3 # 曲線 y1
y2 = 3 - x # 曲線 y2
# 繪制顏色為藍(lán)色蜘矢、寬度為 1 像素的連續(xù)曲線 y1
plt.plot(x, y1, color="blue", linewidth=1.0, linestyle="-")
# 繪制顏色為紫色、寬度為 2 像素的不連續(xù)曲線 y2
plt.plot(x, y2, color="#800080", linewidth=2.0, linestyle="--")
# 設(shè)置橫軸的上下限
plt.xlim(-1, 6)
# 設(shè)置縱軸的上下限
plt.ylim(-2, 10)
plt.show()
設(shè)置標(biāo)簽
# 設(shè)置橫軸標(biāo)簽
plt.xlabel("X")
# 設(shè)置縱軸標(biāo)簽
plt.ylabel("Y")
plt.show()
設(shè)置精準(zhǔn)刻度
# 設(shè)置橫軸精準(zhǔn)刻度
plt.xticks([-1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5])
# 設(shè)置縱軸精準(zhǔn)刻度
plt.yticks([-2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
plt.show()
# 設(shè)置橫軸精準(zhǔn)刻度
plt.xticks([-1, 0, 1, 2, 3, 4, 5, 6],
["-1m", "0m", "1m", "2m", "3m", "4m", "5m", "6m"])
# 設(shè)置縱軸精準(zhǔn)刻度
plt.yticks([-2, 0, 2, 4, 6, 8, 10],
["-2m", "0m", "2m", "4m", "6m", "8m", "10m"])
plt.show()
添加圖例
plt.plot(x, y1, color="blue", linewidth=1.0, linestyle="-", label="y1")
# 繪制顏色為紫色综看、寬度為 2 像素的不連續(xù)曲線 y2
plt.plot(x, y2, color="#800080", linewidth=2.0, linestyle="--", label="y2")
plt.legend(loc="upper left")
特殊點(diǎn)標(biāo)記
注釋特殊點(diǎn)位
有時某些數(shù)據(jù)點(diǎn)非常關(guān)鍵品腹,需要突顯出來。我們需要將改點(diǎn)繪制出來红碑,即繪制散點(diǎn)圖舞吭,再對其做注釋。實(shí)現(xiàn)上述需求析珊,我們要用到scatter()和annotate()函數(shù)羡鸥。scatter() 是用于繪制散圖,這里我們只是用其來繪制單個點(diǎn)忠寻。scatter() 用法惧浴,后續(xù)文章會詳細(xì)對其用法做說明。annotate()則是添加標(biāo)注 奕剃。
scatter() 函數(shù)必須傳入兩個參數(shù) x 和 y衷旅。值得注意得是,它們的數(shù)據(jù)類型是列表纵朋。x 代表要標(biāo)注點(diǎn)的橫軸位置柿顶,y 代表要標(biāo)注點(diǎn)的橫軸位置。x 和 y 列表中下標(biāo)相同的數(shù)據(jù)是對應(yīng)的操软。例如 x 為 [3, 4]嘁锯,y 為 [6, 8],這表示會繪制點(diǎn)(3聂薪,6)家乘,(4, 8)藏澳。因此烤低,x 和 y 長度要一樣。
annotate函數(shù)同樣也有兩個必傳參數(shù)笆载,一個是標(biāo)注內(nèi)容,另一個是 xy涯呻。標(biāo)注內(nèi)容是一個字符串凉驻。xy 表示要在哪個位置(點(diǎn))顯示標(biāo)注內(nèi)容。xy 位置地選定复罐。一般是在scatter() 繪制點(diǎn)附近涝登,但不建議重合,這樣會影響美觀效诅。
# 繪制顏色為藍(lán)色胀滚、寬度為 1 像素的連續(xù)曲線 y1
plt.plot(x, y1, color="blue", linewidth=1.0, linestyle="-", label="y1")
# 繪制散點(diǎn)(3, 6)
plt.scatter([3], [6], s=30, color="blue") # s 為點(diǎn)的 size
# 對(3, 6)做標(biāo)注
plt.annotate("(3, 6)",
xy=(3.3, 5.5), # 在(3.3, 5.5)上做標(biāo)注
fontsize=16, # 設(shè)置字體大小為 16
xycoords='data') # xycoords='data' 是說基于數(shù)據(jù)的值來選位置
# 繪制顏色為紫色趟济、寬度為 2 像素的不連續(xù)曲線 y2
plt.plot(x, y2, color="#800080", linewidth=2.0, linestyle="--", label="y2")
# 繪制散點(diǎn)(3, 0)
plt.scatter([3], [0], s=50, color="#800080")
# 對(3, 0)做標(biāo)注
plt.annotate("(3, 0)",
xy=(3.3, 0), # 在(3.3, 0)上做標(biāo)注
fontsize=16, # 設(shè)置字體大小為 16
xycoords='data') # xycoords='data' 是說基于數(shù)據(jù)的值來選位置
點(diǎn)已經(jīng)被標(biāo)注出來了,如果你還想給點(diǎn)添加注釋咽笼。這需要使用text()函數(shù)顷编。text(x,y剑刑,s) 作用是在點(diǎn)(x媳纬,y) 上添加文本 s。matplotlib 目前好像對中午支持不是很友好施掏, 中文均顯示為亂碼钮惠。
# 繪制散點(diǎn)(3, 0)
plt.scatter([3], [0], s=50, color="#800080")
# 對(3, 0)做標(biāo)注
plt.annotate("(3, 0)", xy=(3.3, 0))
plt.text(4, -0.5, "this point very important",
fontdict={'size': 12, 'color': 'green'}) # fontdict設(shè)置文本字體