Python-matplotlib:快速入門教程

用 matplotlib 來繪制一幅完美的三角函數(shù)圖吧!

本文的源代碼:點擊進入ipy notebook

此文由 Cescfangs翻譯自: Nicolas P. Rougier的Matplotlib教程惠毁,并作出了適當(dāng)?shù)男薷摹?/p>

1.快速創(chuàng)建三角函數(shù)

%matplotlib inline 
#要在ipy notebook里直接顯示Matplotlib的輸出圖象肖爵,需要%inline

import matplotlib.pyplot as plt
import numpy as np
X = np.linspace(-np.pi,np.pi,256,endpoint=True)
(C,S)=np.cos(X),np.sin(X)

#這里用到了Matplotlib和numpy模塊,linspace在(?π,π)之間分成共256個小段逆航,
#并把這256個值賦予X穴豫。C,S分別是cosine和sine值(X,C,S都是numpy數(shù)組)
plt.plot(X,C)
plt.plot(X,S)

1.1

2.參數(shù)修改-繪制完美的三角函數(shù)

在第一部分中我們通過Matplotlibnumpy快速創(chuàng)建了一個三角函數(shù)圖怀大,所采用的參數(shù)都是默認的纱兑。事實上我們可以通過相關(guān)參數(shù)(包括線型、顏色化借、坐標(biāo)潜慎、標(biāo)題、圖示……)的修改使圖形滿足自己的需求屏鳍。

2.1線寬和顏色

把cosine函數(shù)的顏色設(shè)置為藍色,sine則是紅色局服,而且線是不是看起來不夠粗钓瞭?

fig = plt.figure(figsize=(10,6),dpi=80)
plt.plot(X, C, 'b-',lw=2.5)
plt.plot(X, S, 'r-',lw=2.5)
#這里`b-`是`color="blue",linestyle="-"`的簡寫形式
#`lw`=`linewidth`,兩種寫法都是合理的,但是`b-`這種形式明顯更加簡潔淫奔,也很好理解


加粗之后的效果

2.2調(diào)整坐標(biāo)軸

仔細看上面的圖山涡,總覺得不舒服,大概是因為兩條曲線“頂天立地”的原因吧唆迁,要是再多留些空間會更好鸭丛?試試lim:

...
plt.xlim(X.min()*1.1, X.max()*1.1)
plt.ylim(C.min()*1.1, C.max()*1.1)
...
不要~~頂天立地~~

2.3坐標(biāo)刻度改為 3.14 更合適?

對于三角函數(shù)來說唐责,1,2,3這些整數(shù)值沒有多大意義鳞溉,倒是3.14這種能讓人家一看就知道:

....
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi])
plt.yticks([-1,0,1])
...


3.14

等等,3.14改成$\pi$不是更好嗎鼠哥?

...
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
           [r'$-\pi$', r'$-\pi/2$',  r'$0$', r'$\pi/2$',r'$+\pi$'])
...


pi

2.4坐標(biāo)軸放在中間更好看吧熟菲?

現(xiàn)在的坐標(biāo)軸位于圖象四周唉,而且X,Y的原點分散朴恳,感覺上吧坐標(biāo)軸放在圖象中間會更好看一點吧抄罕?

...
ax=plt.gca()
ax.spines['right'].set_color('none') #先把右邊和上邊的邊界設(shè)置為不可見
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0)) #然后把下邊界和左邊界移動到0點
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))

plt.plot(X, C, 'b-',lw=2.5)
plt.plot(X, S, 'r-',lw=2.5)
#
...


坐標(biāo)軸在中間

2.5喂喂喂!我怎么知道哪條是cosine于颖?

那就加個圖例吧:

...
plt.plot(X, C, 'b-',lw=2.5, label='cosine')
plt.plot(X, S, 'r-',lw=2.5, label='sine')
plt.legend(loc='upper left')
...
加上圖例一目了然

2.6特殊點注釋不可少

在一幅圖像中呆贿,有些關(guān)鍵的點要是標(biāo)注出來的話,重點就不言自明了吧森渐?2$\pi$/3如何做入?

...
t=2*np.pi/3

plt.plot([t,t],[0,np.cos(t)], color ='blue', linewidth=2.5, linestyle="--")
plt.scatter([t,],[np.cos(t),], 50, color ='blue') #畫出需要標(biāo)注的點

plt.annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
         xy=(t, np.sin(t)), xycoords='data',
         xytext=(+10, +30), textcoords='offset points', fontsize=16,
         arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2")) 
#給這個點添加注釋,下同

plt.plot([t,t],[0,np.sin(t)], color ='red', linewidth=2.5, linestyle="--")
plt.scatter([t,],[np.sin(t),], 50, color ='red')

plt.annotate(r'$\cos(\frac{2\pi}{3})=-\frac{1}{2}$',
         xy=(t, np.cos(t)), xycoords='data',
         xytext=(-90, -50), textcoords='offset points', fontsize=16,
         arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
...
標(biāo)注美美噠

2.7最后再修改一些細節(jié)

坐標(biāo)軸上標(biāo)記的刻度字體太小了吧同衣!而且會被圖象擋住唉母蛛!

...
for label in ax.get_xticklabels() + ax.get_yticklabels():
    label.set_fontsize(16)
    label.set_bbox(dict(facecolor='w',edgecolor='None',alpha=0.4))
...

大功告成

不斷嘗試,找到自己喜歡的風(fēng)格乳怎,之后就可以直接調(diào)用了彩郊,不需要每次都重新倒騰~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末前弯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子秫逝,更是在濱河造成了極大的恐慌恕出,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件违帆,死亡現(xiàn)場離奇詭異浙巫,居然都是意外死亡,警方通過查閱死者的電腦和手機刷后,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門的畴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人尝胆,你說我怎么就攤上這事丧裁。” “怎么了含衔?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵煎娇,是天一觀的道長。 經(jīng)常有香客問我贪染,道長缓呛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任杭隙,我火速辦了婚禮哟绊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘痰憎。我一直安慰自己匿情,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布信殊。 她就那樣靜靜地躺著炬称,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涡拘。 梳的紋絲不亂的頭發(fā)上玲躯,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機與錄音鳄乏,去河邊找鬼跷车。 笑死,一個胖子當(dāng)著我的面吹牛橱野,可吹牛的內(nèi)容都是我干的朽缴。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼水援,長吁一口氣:“原來是場噩夢啊……” “哼密强!你這毒婦竟也來了茅郎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤或渤,失蹤者是張志新(化名)和其女友劉穎系冗,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體薪鹦,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡掌敬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了池磁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奔害。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖地熄,靈堂內(nèi)的尸體忽然破棺而出华临,到底是詐尸還是另有隱情,我是刑警寧澤离斩,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布银舱,位于F島的核電站瘪匿,受9級特大地震影響跛梗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜棋弥,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一核偿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧顽染,春花似錦漾岳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至唧垦,卻和暖如春捅儒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背振亮。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工巧还, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人坊秸。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓阶牍,卻偏偏與公主長得像荸恕,于是被迫代替她去往敵國和親咬像。 傳聞我的和親對象是個殘疾皇子县昂,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容