numpy在折线图上添加取值_见识matplotlib:不常见的一面,折线图
江湖上所公認(rèn)的一句話,字不如表,表不如圖!人們往往都更喜歡看圖說話,那么用python的各位大俠們,大家都在用什么畫圖呢?各種各樣的畫圖包猶如各式各樣的兵器,有的兵器功能單一但是在細(xì)分領(lǐng)域超級專業(yè)無敵,有的兵器功能多而全,用法靈活。
? 眾所周知,matplotlib是python繪圖的基礎(chǔ)包,能夠生成各種各樣2D或者3D的圖形,用法算是多而全的那種,下邊是matplotlib官網(wǎng)首頁作為例子的幾張圖,大家感受一下:
? 什么?丑拒?不不不,別激動!其實matplotlib一直是一個低調(diào)奢華有內(nèi)涵的包,需要我們透過它樸實無華的外表認(rèn)清它豐富多彩的內(nèi)在,來康康這條妖嬈的曲線,有沒有感受到它的召喚?內(nèi)心會不會有了一絲絲想要學(xué)習(xí)的沖動?
啊?太妖嬈了啊?有文藝的,比如這個動態(tài)的雨滴圖:
? 會不會聯(lián)想到玻璃窗氤氳著霧氣的咖啡館外,散落著幾片梧桐落葉的街道,滴滴答答落下的雨珠在淺淺的小水洼中激起朵朵水花,還差一把傘兩個人就可以腦補(bǔ)一出戲的那種。。。。。
? 咳咳。。。聯(lián)想能力有點強(qiáng),差點hold不住。總之不管有什么樣的想法,matplotlib大概率都能想辦法實現(xiàn),3D圖像也不在話下,比如官網(wǎng)首頁的那四個圖最后一個就是3D的呢!
? 嗯~?太小?看不清?這都不叫事兒,3D清晰大圖來一個!
? 個人感覺這個像帽子一樣的3D圖,不論是從配色還是到形狀都還挺好看的。這“帽子”是官網(wǎng)上給的示例圖,只不過背景上的格子線和刻度被我去掉了,看起來還蠻有質(zhì)感的樣子。
? 所以,不管是2D還是3D,抑或是靜態(tài)、動態(tài),matplotlib統(tǒng)統(tǒng)都搞得定。
? 既然matplotlib如此強(qiáng)大,那么新的問題來了,它會不會很難學(xué)?
? 答案簡單粗暴又有力,那就是:不會!
? 用matplotlib實現(xiàn)畫圖并不難,當(dāng)然要實現(xiàn)上邊的動態(tài)圖和3D圖會有一點難度,但這也只是相對于簡單繪圖而言,畫圖的邏輯并沒有相差很多,通過簡單的圖形學(xué)會運(yùn)用matplotlib繪圖的邏輯以及基礎(chǔ)的知識,再把這些邏輯和知識細(xì)節(jié)運(yùn)用到復(fù)雜的圖形中去,循序漸進(jìn),水到渠成!
? 光說不練假把式,有句話叫做“Talk is cheap !Show me the code !”
? 那么我們就從一個簡單又基礎(chǔ)的折線圖開始,揭開matplotlib的層層面紗,愉快的探索它的各種應(yīng)用吧。
畫一條折線
? 雖然說是畫折線圖,但是有些步驟是畫圖通用的,比如說…導(dǎo)包
? 我們的matplotlib依賴numpy包構(gòu)建,而且繪圖過程中有時也會需要用numpy生成一些數(shù)字,所以導(dǎo)入繪圖包matplotlib之前都會先導(dǎo)入numpy包,而pandas也是進(jìn)行數(shù)據(jù)處理的包,并且實際工作中,用來畫圖的源數(shù)據(jù)很多時候是表格數(shù)據(jù),所以能夠處理表格數(shù)據(jù)的pandas包也要一起導(dǎo)入進(jìn)來。
? 另外,在matplotlib中包含兩個模塊,pyplot和pylab,我們這里只導(dǎo)入了pyplot模塊,對于初學(xué)者來說可能會不太理解這兩個模塊都是做什么的,為什么只導(dǎo)入pyplot呢?
? Matplotlib是整個軟件包;pyplot和pylab是matplotlib中的模塊;pylab是一個便捷模塊, 在單個名稱空間中批量導(dǎo)入 matplotlib.pyplot(用于繪圖)和numpy(用于數(shù)學(xué)以及使用數(shù)組)。盡管許多示例都使用pylab,但不再建議使用。對于非交互式繪圖,建議使用pyplot創(chuàng)建圖形,然后使用OO接口進(jìn)行繪圖。(以上是官網(wǎng)給出的關(guān)于matplotlib與兩個模塊之間關(guān)系的解釋)
? 是不是理解了為什么只導(dǎo)入matplotlib.pyplot啦?
? 讓我們來繪制一個簡單的折線圖吧!
? 第一步,先解決數(shù)據(jù)來源問題,也就是我們是要將哪些數(shù)據(jù)轉(zhuǎn)化成圖,這里用前邊導(dǎo)入的numpy包生成一些數(shù)據(jù)用來繪圖。
生成了200個取值范圍在-1到1之間的浮點數(shù),并且運(yùn)用函數(shù)創(chuàng)建了x和y之間的關(guān)系,下邊我們就對這組關(guān)系進(jìn)行繪圖,對于這種簡單的繪圖,可以省略很多步驟,直接調(diào)用繪制折線圖的函數(shù)plt.plot()一步出圖:
喏,這就是上邊的幾行代碼繪制出的折線圖,反應(yīng)的函數(shù)關(guān)系是y = x^2,是不是超級簡單?
覺得太簡陋了?
嗯~~就算是手繪一張函數(shù)的圖像,也要有圖標(biāo)題、軸標(biāo)簽、圖例等等內(nèi)容,好的!那我們就來完善一下這個簡陋折線圖,讓它完整更美觀。
而且,這套流程也適用于折線圖之外的其他類型的圖,其他圖也可以參考這套思路來進(jìn)行完善哦。
得到的圖:
? 通常能夠進(jìn)行設(shè)置的標(biāo)題、標(biāo)簽、圖例等,都在代碼中用注釋的形式寫的很清楚了,所以不再占篇幅進(jìn)行贅述。那么對于一個折線圖,能夠進(jìn)行設(shè)置的就只有這些內(nèi)容了嘛?當(dāng)然不是,比如說折線的線條樣式,線條顏色,線條上點的樣式、大小、顏色等等,可以設(shè)置的內(nèi)容多到超乎想象,然而實際的工作中用不到這么多的設(shè)置,有興趣的小伙伴,在運(yùn)行plt.plot()這個函數(shù)之前,通過shift+tab快捷鍵調(diào)出函數(shù)的幫助文檔,可以探索更多的應(yīng)用。
這是我的一點點探索:
繪制出的圖像如下:
? 額~~~有點丑,不要在意這些細(xì)節(jié)哈,畢竟配色、線條、標(biāo)記什么的鼓搗了半天才鼓搗出一個看起來不太辣眼睛又能顯示常用參數(shù)作用的圖,我大概是五行缺美商吧。。。。。竟然覺得這個圖畫出來有點像項鏈(捂臉)。
? 那么,折線圖能夠進(jìn)行設(shè)置的就是這些了嘛?能畫出來的圖就是以上展現(xiàn)出來的這些嘛?當(dāng)然不!最前邊那條妖嬈的曲線本質(zhì)上也是折線圖,而且對于圖形來說可以進(jìn)行設(shè)置的也不止這些,展現(xiàn)出來的這些大概可以算作是比較豐厚的新手村禮包,至于還可以進(jìn)行哪些設(shè)置實現(xiàn)哪些效果呢,留個懸念、賣個關(guān)子,下次再說咯!嘿嘿!
總結(jié)
以上是生活随笔為你收集整理的numpy在折线图上添加取值_见识matplotlib:不常见的一面,折线图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4种实例 advice aop_Java
- 下一篇: cmd 查看本地ip_西门子WinCCV