輕松可視化:Matplotlib繪圖終極指南

姓名:閆偉? 學(xué)號(hào):15020150038

轉(zhuǎn)載自:https://zhuanlan.zhihu.com/p/46890207

【嵌牛導(dǎo)讀】:Matplotlib 是最常用的 2D 繪圖庫(kù)之一纺涤,也是一款很實(shí)用的數(shù)據(jù)可視化工具

【嵌牛鼻子】:Matplotlib

【嵌牛提問(wèn)】:怎么更改圖例上的標(biāo)簽名稱(chēng)颖系?如何設(shè)置刻度線堕阔?怎樣將比例設(shè)置為對(duì)數(shù)?我該怎么給圖表添加注釋和箭頭进苍?如何給我的圖表添加網(wǎng)格線捣域?

【嵌牛正文】:

本文收集了如何自定義你的 matplotlib 繪圖的常見(jiàn)問(wèn)題和答案,也可以作為 matplotlib 快速繪圖的速查表叔壤,但不是 matplotlib 的入門(mén)介紹繁堡。如果你對(duì)這個(gè)庫(kù)還不熟悉沈善,可以看看它的文檔

文章涵蓋的話題包括圖表帖蔓、圖表屬性、圖例瞳脓、軸塑娇、注釋和保存圖表。

初步小貼士

首先劫侧,導(dǎo)入 matplotlib

import matplotlib.pyplot as plt

在 Jupyter Notebook 中埋酬,你可以把下面這行代碼包含在內(nèi),這樣每次想畫(huà)圖的時(shí)候就不用必須調(diào)用 plt.show()了烧栋。

%matplotlib inline

另一個(gè)方便的技巧是写妥,如果你不想出現(xiàn) <matplotlib.collections.PathCollection at 0x1182bc710> 這行惱人的信息,只需在你的代碼后面添加一個(gè)分號(hào)审姓,如下面第二張圖所示珍特。

之前:

之后:

圖表和子圖(Subplot)

問(wèn):我該怎么增加圖表的大小魔吐?

很多時(shí)候扎筒,圖表的默認(rèn)尺寸都很小莱找。你可以添加參數(shù) figsize,像下面這樣以英寸為單位指明圖形的高度和寬度嗜桌。

plt.figure(figsize=(20,10))

問(wèn):什么是子圖(subplot)奥溺?我該怎么創(chuàng)建和操作子圖?

子圖就是一組更小的軸骨宠,它們一起存在于單個(gè)圖中浮定。下面是 2X2 形式的 4 個(gè)子圖示例:

這些子圖是用下面這些代碼創(chuàng)建的。我們調(diào)用 plt.subplot层亿,并指明 3 個(gè)數(shù)字桦卒。它們指行、列和子圖的數(shù)量棕所。

for i in range (1, 5):? plt.subplot(2, 2, i)? plt.text(0.5,0.5, str((2, 2, i)), ha=’center’, fontsize = 10)? plt.tight_layout()

在上面的子圖中闸盔,圖中的文本是對(duì)這 3 個(gè)數(shù)字的引用。子圖編號(hào)的順序是左上方開(kāi)始的行琳省,從數(shù)字 1 開(kāi)始迎吵。例如,左上圖是子圖編號(hào) 1针贬,右上圖是子圖編號(hào) 2击费,左下圖是子圖編號(hào) 3,右下圖是子圖編號(hào) 4.

注意桦他,你必須調(diào)用 plt.subplot(2, 2, 1) 來(lái)激活子圖蔫巩。

問(wèn):我的子圖布局看著很丑,該怎么調(diào)整快压?

下面例子中圆仔,子圖之間靠的太近了,看著有點(diǎn)擠蔫劣。我們可以通過(guò)調(diào)用 plt.tight_layout() 來(lái)修正坪郭。它會(huì)清理子圖之間的填充部分,讓圖表看起來(lái)更清爽脉幢。

之前:

之后:

問(wèn):怎么向我的圖表添加網(wǎng)格線歪沃?

plt.grid(True)

風(fēng)格和屬性

問(wèn):如何修改圖表中線條的顏色/寬度/風(fēng)格?

你可以傳遞和設(shè)置參數(shù) color嫌松,linewidth 和 linestyle沪曙。

plt.plot(x, y, color = ‘green’ , linewidth = 2, linestyle = “-”)

下面是一些你可以選擇的線條風(fēng)格:

問(wèn):怎樣修改標(biāo)記的樣式或顏色?

你可以傳遞和設(shè)置參數(shù) marker 和 color萎羔,如下所示:

plt.scatter(x, y, marker = ‘o’, color = ‘red’)

這里是一些供你選擇的標(biāo)記:

問(wèn):怎么修改線條的透明度液走?

向圖表傳入 alpha 參數(shù)表示線條的透明度,它的設(shè)置范圍在 0 到 1 之間,其中 0 表示完全透明育灸,1 表示無(wú)透明腻窒。

plt.plot(x, y, alpha = 0.1)

下圖展示了當(dāng) alpha 分別為 0.9,0.5 和 0.1 時(shí)的透明效果:

圖例

問(wèn):該怎樣為我的圖表添加圖例?

如果你的圖表上沒(méi)有自動(dòng)出現(xiàn)圖例磅崭,你可以用如下代碼來(lái)顯示圖例儿子。

plt.legend()

問(wèn):該如何修改圖例出現(xiàn)的位置?

你可以向 loc 參數(shù)中傳入以下參數(shù):upper right砸喻,upper left柔逼,lower left,lower right, right, center left, center right, lower center, upper center, center割岛,分別表示右上角愉适,左上角,左下角癣漆,右下角维咸,右角,左中角惠爽,右中角癌蓖,下中心,上中心婚肆,中心位置租副。

plt.legend(loc = ‘lower right’);

問(wèn):該怎樣修改圖例中的標(biāo)簽名稱(chēng)?

方法1:

比方說(shuō)你有 10 個(gè)圖例項(xiàng)较性,你只想修改第一個(gè)圖例項(xiàng)中的標(biāo)簽用僧。將圖例保存到變量 L 之后,可以用“L.get_texts()[0]”調(diào)用圖例中的第一項(xiàng)赞咙,手動(dòng)設(shè)置為你想用的文本责循。在下面的例子中,我們將圖例修改為了‘line123’攀操。

L = plt.legend()get_texts()[0].set_text('line123')

方法2:

另外院仿,你可以創(chuàng)建一列標(biāo)簽名稱(chēng),設(shè)置圖例標(biāo)簽等于你創(chuàng)建的列表崔赌。

mylabels = ['happy', 'sad', 'nervous', 'angry', 'neutral']plt.legend(labels = my_labels)

問(wèn):如何修改圖例大幸庵耸别?

如果想設(shè)置具體圖表中的圖例大小健芭,你可以傳入 fontsize 參數(shù)。

plt.legend(fontsize = 10);

也可以不用數(shù)字表示字體大小秀姐,像下面這樣操作:

plt.legend(fontsize = 'x-large');

問(wèn):如何命名 x 軸和 y 軸的標(biāo)簽慈迈?以及如何修改字體大小?

根據(jù)你想具體使用的哪個(gè)軸痒留,你可以叫他們‘ylabel’或‘xlabel’谴麦,如下所示。第一項(xiàng)就是你想讓軸使用的名稱(chēng)伸头。如果想設(shè)置字體大小匾效,像下面這樣嵌入 fontsize 參數(shù):

plt.ylabel('Income', fontsize = 15) #for y labelplt.xlabel('Age', fontsize = 15) #for x label

問(wèn):我該如何設(shè)置刻度線?

第一個(gè)參數(shù)設(shè)置刻度線所在的位置恤磷,第二個(gè)參數(shù)設(shè)置刻度線旁邊的標(biāo)簽面哼。

plt.yticks([0,2,4,6,7,10], [“0”, “2B”, "4B”, “8B”, “10B”])plt.xticks([0,1,2,3,4,5], [“0”, “1oz”, "2oz”, “3oz”, “4oz”])

問(wèn):如何設(shè)置軸的長(zhǎng)度?

plt.ylim(-1.0,1.0) #for y axisplt.xlim(0, 50) #for x axis

問(wèn):如何將比例修改為對(duì)數(shù)扫步?

plt.yscale(“l(fā)og”) #for y axisplt.xsclae("log") #for x axis

注釋

問(wèn):如何向圖表添加注釋和箭頭魔策?

我們可以創(chuàng)建注釋?zhuān)⒅该髯⑨?xy 參數(shù)的坐標(biāo)。xytext 定義了標(biāo)簽的坐標(biāo)河胎。如果我們想添加箭頭闯袒,需要使用 arrowprops 來(lái)顯示箭頭。

plt.annotate(‘sentosa’, xy = (5.0, 3.5), xytext(4.25, 4.0), arrowprops={'color': 'red'})

保存圖表

按自己的需要自定義完圖表后游岳,就該保存了政敢。這里我們將示例中的圖表命名為“plot1”,用如下方式將圖表保存到你的工作目錄中吭历。

plt.savefig('plot1.jpg')

最后一點(diǎn)

如果你在 Jupyter Notebook 中畫(huà)了一個(gè)非常大的圖表的話堕仔,你的 Jupyter Notebook 會(huì)變得非常慢。

如果你將鼠標(biāo)懸停在圖形的左側(cè)晌区,會(huì)出現(xiàn)一個(gè)如下所示的灰色框摩骨。雙擊該灰色框,就能隱藏你的圖表朗若,從而讓 Jupyter Notebook 可以正常運(yùn)行恼五。這也有助于滾動(dòng)圖表。

希望本文對(duì)你使用 matplotlib 繪圖有所幫助哭懈。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末灾馒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子遣总,更是在濱河造成了極大的恐慌睬罗,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旭斥,死亡現(xiàn)場(chǎng)離奇詭異容达,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)垂券,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)花盐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事算芯∑饣瑁” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵熙揍,是天一觀的道長(zhǎng)职祷。 經(jīng)常有香客問(wèn)我,道長(zhǎng)届囚,這世上最難降的妖魔是什么堪旧? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮奖亚,結(jié)果婚禮上淳梦,老公的妹妹穿的比我還像新娘。我一直安慰自己昔字,他們只是感情好爆袍,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著作郭,像睡著了一般陨囊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上夹攒,一...
    開(kāi)封第一講書(shū)人閱讀 49,784評(píng)論 1 290
  • 那天蜘醋,我揣著相機(jī)與錄音,去河邊找鬼咏尝。 笑死压语,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的编检。 我是一名探鬼主播胎食,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼允懂!你這毒婦竟也來(lái)了厕怜?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蕾总,失蹤者是張志新(化名)和其女友劉穎粥航,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體生百,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡递雀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了置侍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片映之。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蜡坊,靈堂內(nèi)的尸體忽然破棺而出杠输,到底是詐尸還是另有隱情,我是刑警寧澤秕衙,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布蠢甲,位于F島的核電站,受9級(jí)特大地震影響据忘,放射性物質(zhì)發(fā)生泄漏鹦牛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一勇吊、第九天 我趴在偏房一處隱蔽的房頂上張望曼追。 院中可真熱鬧,春花似錦汉规、人聲如沸礼殊。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)晶伦。三九已至,卻和暖如春啄枕,著一層夾襖步出監(jiān)牢的瞬間婚陪,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工频祝, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留泌参,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓常空,卻偏偏與公主長(zhǎng)得像及舍,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子窟绷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

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

  • 一锯玛、概述 深度學(xué)習(xí)的一個(gè)重要手段是訓(xùn)練數(shù)據(jù)和訓(xùn)練過(guò)程的可視化,因此兼蜈,我們關(guān)于深度學(xué)習(xí)的系列介紹文章就從Matplo...
    aoqingy閱讀 6,140評(píng)論 0 24
  • 資料來(lái)源:https://github.com/BrambleXu/pydata-notebook 信息可視化(也...
    林清貓耳閱讀 1,551評(píng)論 0 3
  • 從事教育工作時(shí)間長(zhǎng)了攘残,周?chē)佑|的都是各種各樣的教育工作者。有的是做培訓(xùn):課程輔導(dǎo)为狸、禮儀培訓(xùn)歼郭、潛能開(kāi)發(fā)、性格培養(yǎng)辐棒、情...
    嚶說(shuō)親子閱讀 442評(píng)論 0 0
  • 我想小時(shí)候誰(shuí)都看過(guò)關(guān)于鐵杵磨成針的故事。 李白因?yàn)閷W(xué)習(xí)好苦泰涂,不想學(xué)習(xí)鲫竞,就跑出去玩,碰到了傳說(shuō)中的老奶奶逼蒙,在磨一根鐵...
    瘋?cè)~楓了閱讀 739評(píng)論 0 0
  • 可能這個(gè)世界本來(lái)都是灰色的从绘,弱肉強(qiáng)食,海底和從來(lái)都是同樣的顏色是牢。我就這樣默默的走來(lái)僵井,默默的離開(kāi)。 今日天色已晚驳棱,早...
    8e47b83a0873閱讀 163評(píng)論 0 0