乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Matplotlib 入門教程

       Veecoylb85u7u6 2019-05-07

      第一章 Matplotlib 簡介

      歡迎閱讀 Python 3+ Matplotlib 系列教程。 在本系列中,我們將涉及 Matplotlib 數(shù)據(jù)可視化模塊的多個(gè)方面。 Matplotlib 能夠創(chuàng)建多數(shù)類型的圖表,如條形圖,散點(diǎn)圖,條形圖,餅圖,堆疊圖,3D 圖和地圖圖表。

      首先,為了實(shí)際使用 Matplotlib,我們需要安裝它。

      如果你安裝了更高版本的 Python,你應(yīng)該能夠打開cmd.exe或終端,然后執(zhí)行:

      注意:如果上面的較短命令不工作,你可能需要執(zhí)行C:/Python34/Scripts/pip install matplotlib。

      如果在導(dǎo)入matplotlib時(shí),你會(huì)收到類似『無命名模塊』和模塊名稱的錯(cuò)誤,這意味著你還需要安裝該模塊。 一個(gè)常見的問題是缺少名為six的模塊。 這意味著你需要使用pip安裝six

      或者,你可以前往 Matplotlib.org 并通過訪問下載頁面下載適當(dāng)?shù)陌姹具M(jìn)行安裝。 請記住,因?yàn)槟愕牟僮飨到y(tǒng)為 64 位,你不一定需要 64 位版本的 Python。 如果你不打算嘗試 64 位,你可以使用 32 位。 打開 IDLE 并閱讀頂部。 如果它說你是 64 位,你就是 64 位,如果它說是 32 位,那么你就是 32 位。 一旦你安裝了 Python,你就做好了準(zhǔn)備,你可以編寫任何你想要的邏輯。 我喜歡使用 IDLE 來編程,但你可以隨意使用任何你喜歡的東西。

      這一行導(dǎo)入集成的pyplot,我們將在整個(gè)系列中使用它。 我們將pyplot導(dǎo)入為plt,這是使用pylot的 python 程序的傳統(tǒng)慣例。

      接下來,我們調(diào)用plot.plot方法繪制一些坐標(biāo)。 這個(gè).plot需要許多參數(shù),但前兩個(gè)是'x''y'坐標(biāo),我們放入列表。 這意味著,根據(jù)這些列表我們擁有 3 個(gè)坐標(biāo):1,5 2,73,4。

      plt.plot在后臺(tái)『繪制』這個(gè)繪圖,但繪制了我們想要的一切之后,當(dāng)我們準(zhǔn)備好的時(shí)候,我們需要把它帶到屏幕上。

      這樣,應(yīng)該彈出一個(gè)圖形。 如果沒有,有時(shí)它可以彈出,或者你可能得到一個(gè)錯(cuò)誤。 你的圖表應(yīng)如下所示:

      這個(gè)窗口是一個(gè) matplotlib 窗口,它允許我們查看我們的圖形,以及與它進(jìn)行交互和訪問。 你可以將鼠標(biāo)懸停在圖表上,并查看通常在右下角的坐標(biāo)。 你也可以使用按鈕。 它們可能在不同的位置,但在上圖中,這些按鈕在左下角。

      Home(主頁)

      一旦你開始瀏覽你的圖表,主頁按鈕會(huì)幫助你。 如果你想要返回原始視圖,可以單擊它。 在瀏覽圖表之前單擊此按鈕將不會(huì)生效。

      Forward/Back(前進(jìn)/后退)

      這些按鈕可以像瀏覽器中的前進(jìn)和后退按鈕一樣使用。 你可以單擊這些來移回到你之前的位置,或再次前進(jìn)。

      Pan(平移)

      你可以點(diǎn)擊平移按鈕,之后點(diǎn)擊并拖拽你的圖表。

      Zoom(縮放)

      縮放按鈕可讓你單擊它,然后單擊并拖動(dòng)出要放大的方形區(qū)域。 放大需要左鍵單擊并拖動(dòng)。 你也可以右鍵單擊并拖動(dòng)來縮小。

      Configure Subplots(配置子圖)

      此按鈕允許你對圖形和繪圖配置各種間距選項(xiàng)。 點(diǎn)擊它會(huì)彈出:

      每個(gè)藍(lán)色條形都是一個(gè)滑塊,它允許你調(diào)整內(nèi)邊距。 其中有些現(xiàn)在沒有任何效果,因?yàn)闆]有任何其他子圖。 前四個(gè)值調(diào)整圖形到窗口邊緣的邊距。 之后wspacehspace對應(yīng)于當(dāng)你繪制多個(gè)子圖時(shí),它們的水平或豎直間距。

      Save(保存)

      此按鈕允許你以各種形式保存圖形。

      所以這是 matplotlib 的快速介紹,我們之后會(huì)涉及更多。

      第二章 圖例、標(biāo)題和標(biāo)簽

      在本教程中,我們將討論 Matplotlib 中的圖例,標(biāo)題和標(biāo)簽。 很多時(shí)候,圖形可以不言自明,但是圖形帶有標(biāo)題,軸域上的標(biāo)簽和圖例,來解釋每一行是什么非常必要。

      注:軸域(Axes)即兩條坐標(biāo)軸圍城的區(qū)域。

      從這里開始:

      這樣我們可以畫出兩個(gè)線條,接下來:

      在這里,我們繪制了我們已經(jīng)看到的東西,但這次我們添加另一個(gè)參數(shù)label。 這允許我們?yōu)榫€條指定名稱,我們以后可以在圖例中顯示它。 我們的其余代碼為:

      使用plt.xlabelplt.ylabel,我們可以為這些相應(yīng)的軸創(chuàng)建標(biāo)簽。 接下來,我們可以使用plt.title創(chuàng)建圖的標(biāo)題,然后我們可以使用plt.legend()生成默認(rèn)圖例。 結(jié)果圖如下:

      第三章 條形圖和直方圖

      這個(gè)教程中我們會(huì)涉及條形圖和直方圖。我們先來看條形圖:

      plt.bar為我們創(chuàng)建條形圖。 如果你沒有明確選擇一種顏色,那么雖然做了多個(gè)圖,所有的條看起來會(huì)一樣。 這讓我們有機(jī)會(huì)使用一個(gè)新的 Matplotlib 自定義選項(xiàng)。 你可以在任何類型的繪圖中使用顏色,例如g為綠色,b為藍(lán)色,r為紅色,等等。 你還可以使用十六進(jìn)制顏色代碼,如#191970

      接下來,我們會(huì)講解直方圖。 直方圖非常像條形圖,傾向于通過將區(qū)段組合在一起來顯示分布。 這個(gè)例子可能是年齡的分組,或測試的分?jǐn)?shù)。 我們并不是顯示每一組的年齡,而是按照 20 ~ 25,25 ~ 30... 等等來顯示年齡。 這里有一個(gè)例子:

      產(chǎn)生的圖表為:

      對于plt.hist,你首先需要放入所有的值,然后指定放入哪個(gè)桶或容器。 在我們的例子中,我們繪制了一堆年齡,并希望以 10 年的增量來顯示它們。 我們將條形的寬度設(shè)為 0.8,但是如果你想讓條形變寬,或者變窄,你可以選擇其他的寬度。

      第四章 散點(diǎn)圖

      接下來,我們將介紹散點(diǎn)圖。散點(diǎn)圖通常用于比較兩個(gè)變量來尋找相關(guān)性或分組,如果你在 3 維繪制則是 3 個(gè)。

      散點(diǎn)圖的一些示例代碼:

      結(jié)果為:

      plt.scatter不僅允許我們繪制xy,而且還可以讓我們決定所使用的標(biāo)記顏色,大小和類型。 有一堆標(biāo)記選項(xiàng),請參閱 Matplotlib 標(biāo)記文檔中的所有選項(xiàng)。

      第五章 堆疊圖

      在這篇 Matplotlib 數(shù)據(jù)可視化教程中,我們要介紹如何創(chuàng)建堆疊圖。 堆疊圖用于顯示『部分對整體』隨時(shí)間的關(guān)系。 堆疊圖基本上類似于餅圖,只是隨時(shí)間而變化。

      讓我們考慮一個(gè)情況,我們一天有 24 小時(shí),我們想看看我們?nèi)绾位ㄙM(fèi)時(shí)間。 我們將我們的活動(dòng)分為:睡覺,吃飯,工作和玩耍。

      我們假設(shè)我們要在 5 天的時(shí)間內(nèi)跟蹤它,因此我們的初始數(shù)據(jù)將如下所示:

      因此,我們的x軸將包括day變量,即 1, 2, 3, 4 和 5。然后,日期的各個(gè)成分保存在它們各自的活動(dòng)中。 像這樣繪制它們:

      在這里,我們可以至少在顏色上看到,我們?nèi)绾位ㄙM(fèi)我們的時(shí)間。 問題是,如果不回頭看代碼,我們不知道什么顏色是什么。 下一個(gè)問題是,對于多邊形來說,我們實(shí)際上不能為數(shù)據(jù)添加『標(biāo)簽』。 因此,在任何不止是線條,帶有像這樣的填充或堆疊圖的地方,我們不能以固有方式標(biāo)記出特定的部分。 這不應(yīng)該阻止程序員。 我們可以解決這個(gè)問題:

      我們在這里做的是畫一些空行,給予它們符合我們的堆疊圖的相同顏色,和正確標(biāo)簽。 我們還使它們線寬為 5,使線條在圖例中顯得較寬。 現(xiàn)在,我們可以很容易地看到,我們?nèi)绾位ㄙM(fèi)我們的時(shí)間。

      第六章 餅圖

      餅圖很像堆疊圖,只是它們位于某個(gè)時(shí)間點(diǎn)。 通常,餅圖用于顯示部分對于整體的情況,通常以%為單位。 幸運(yùn)的是,Matplotlib 會(huì)處理切片大小以及一切事情,我們只需要提供數(shù)值。

      plt.pie中,我們需要指定『切片』,這是每個(gè)部分的相對大小。 然后,我們指定相應(yīng)切片的顏色列表。 接下來,我們可以選擇指定圖形的『起始角度』。 這使你可以在任何地方開始繪圖。 在我們的例子中,我們?yōu)轱瀳D選擇了 90 度角,這意味著第一個(gè)部分是一個(gè)豎直線條。 接下來,我們可以選擇給繪圖添加一個(gè)字符大小的陰影,然后我們甚至可以使用explode拉出一個(gè)切片。

      我們總共有四個(gè)切片,所以對于explode,如果我們不想拉出任何切片,我們傳入0,0,0,0。 如果我們想要拉出第一個(gè)切片,我們傳入0.1,0,0,0。

      最后,我們使用autopct,選擇將百分比放置到圖表上面。

      第七章 從文件加載數(shù)據(jù)

      很多時(shí)候,我們想要繪制文件中的數(shù)據(jù)。 有許多類型的文件,以及許多方法,你可以使用它們從文件中提取數(shù)據(jù)來圖形化。 在這里,我們將展示幾種方法。 首先,我們將使用內(nèi)置的csv模塊加載CSV文件,然后我們將展示如何使用 NumPy(第三方模塊)加載文件。

      這里,我們打開樣例文件,包含以下數(shù)據(jù):

      接下來,我們使用csv模塊讀取數(shù)據(jù)。 csv讀取器自動(dòng)按行分割文件,然后使用我們選擇的分隔符分割文件中的數(shù)據(jù)。 在我們的例子中,這是一個(gè)逗號。 注意:csv模塊和csv reader不需要文件在字面上是一個(gè).csv文件。 它可以是任何具有分隔數(shù)據(jù)的簡單的文本文件。

      一旦我們這樣做了,我們將索引為 0 的元素存儲(chǔ)到x列表,將索引為 1 的元素存儲(chǔ)到y列表中。 之后,我們都設(shè)置好了,準(zhǔn)備繪圖,然后顯示數(shù)據(jù)。

      雖然使用 CSV 模塊是完全正常的,但使用 NumPy 模塊來加載我們的文件和數(shù)據(jù),可能對我們更有意義。 如果你沒有 NumPy,你需要按下面的步驟來獲取它。 為了了解安裝模塊的更多信息,請參閱 pip 教程。 大多數(shù)人應(yīng)該都能打開命令行,并執(zhí)行pip install numpy。

      如果不能,請參閱鏈接中的教程。

      一旦你安裝了 NumPy,你可以編寫如下代碼:

      結(jié)果應(yīng)該是相同的圖表。 稍后,當(dāng)我們加載數(shù)據(jù)時(shí),我們可以利用 NumPy 為我們做一些更多的工作,但這是教程未來的內(nèi)容。 就像csv模塊不需要一個(gè)特地的.csv一樣,loadtxt函數(shù)不要求文件是一個(gè).txt文件,它可以是一個(gè).csv,它甚至可以是一個(gè) python 列表對象。

      第八章 從網(wǎng)絡(luò)加載數(shù)據(jù)

      除了從文件加載數(shù)據(jù),另一個(gè)流行的數(shù)據(jù)源是互聯(lián)網(wǎng)。 我們可以用各種各樣的方式從互聯(lián)網(wǎng)加載數(shù)據(jù),但對我們來說,我們只是簡單地讀取網(wǎng)站的源代碼,然后通過簡單的拆分來分離數(shù)據(jù)。

      這里有很多步驟。首先,我們看到importpyplot像往常一樣導(dǎo)入,然后導(dǎo)入了numpy,然后是用于訪問互聯(lián)網(wǎng)的urllib,然后導(dǎo)入了matplotlib.dates作為mdates,它對于將日期戳轉(zhuǎn)換為 matplotlib 可以理解的日期很有用。

      接下來,我們開始構(gòu)建我們的graph_data函數(shù)。在這里,我們首先定義包含股票數(shù)據(jù)的網(wǎng)址。之后,我們寫一些urllib代碼來訪問該 URL,然后使用.read讀取源代碼,之后我們繼續(xù)解碼該數(shù)據(jù)。如果你使用 Python 2,則不必使用decode。

      然后,我們定義一個(gè)空列表,這是我們將要放置股票數(shù)據(jù)的地方,我們也開始使用split_source變量拆分?jǐn)?shù)據(jù),以換行符拆分。

      現(xiàn)在,如果你去看源代碼,用stock替換 URL 中的+stock+,像 AAPL 那樣,你可以看到大多數(shù)頁面數(shù)據(jù)確實(shí)是股票定價(jià)信息,但有一些頭信息我們需要過濾掉。為此,我們使用一些基本的過濾,檢查它們來確保每行有 6 個(gè)數(shù)據(jù)點(diǎn),然后確保術(shù)語values不在行中。

      現(xiàn)在,我們已經(jīng)解析了數(shù)據(jù),并做好了準(zhǔn)備。我們將使用 NumPy:

      我們在這里所做的是,使用numpyloadtxt函數(shù),并將這六個(gè)元素解構(gòu)到六個(gè)變量。 這里的第一個(gè)參數(shù)是stock_data,這是我們加載的數(shù)據(jù)。 然后,我們指定delimiter(這里是逗號),然后我們指定我們確實(shí)想要在這里解包變量,不是一個(gè)變量,而是我們定義的這組變量。 最后,我們使用可選的converters參數(shù)來指定我們要轉(zhuǎn)換的元素(0),以及我們打算要怎么做。 我們傳遞一個(gè)名為bytespdate2num的函數(shù),它還不存在,但我們下面會(huì)編寫它。

      第九章 時(shí)間戳的轉(zhuǎn)換

      本教程的重點(diǎn)是將來自 Yahoo finance API 的日期轉(zhuǎn)換為 Matplotlib 可理解的日期。 為了實(shí)現(xiàn)它,我們要寫一個(gè)新的函數(shù),bytespdate2num。

      此函數(shù)接受數(shù)據(jù),基于編碼來解碼數(shù)據(jù),然后返回它。

      將此應(yīng)用于我們的程序的其余部分:

      如果你繪制 TSLA,結(jié)果圖應(yīng)該看起來像這樣:

      第十章 基本的自定義

      在 Matplotlib 教程中,我們將討論一些可能的圖表自定義。 為了開始修改子圖,我們必須定義它們。 我們很快會(huì)談?wù)撍麄?,但有兩種定義并構(gòu)造子圖的主要方法。 現(xiàn)在,我們只使用其中一個(gè),但我們會(huì)很快解釋它們。

      現(xiàn)在,修改我們的graph_data函數(shù):

      為了修改圖表,我們需要引用它,所以我們將它存儲(chǔ)到變量fig。 然后我們將ax1定義為圖表上的子圖。 我們在這里使用subplot2grid,這是獲取子圖的兩種主要方法之一。 我們將深入討論這些東西,但現(xiàn)在,你應(yīng)該看到我們有 2 個(gè)元組,它們提供了(1,1)(0,0)。 1,1表明這是一個(gè) 1×1 網(wǎng)格。 然后0,0表明這個(gè)子圖的『起點(diǎn)』將為0,0。

      接下來,通過我們已經(jīng)編寫的代碼來獲取和解析數(shù)據(jù):

      下面,我們這樣繪制數(shù)據(jù):

      現(xiàn)在,由于我們正在繪制日期,我們可能會(huì)發(fā)現(xiàn),如果我們放大,日期會(huì)在水平方向上移動(dòng)。但是,我們可以自定義這些刻度標(biāo)簽,像這樣:

      這將使標(biāo)簽轉(zhuǎn)動(dòng)到對角線方向。 接下來,我們可以添加一個(gè)網(wǎng)格:

      然后,其它東西我們保留默認(rèn),但我們也可能需要略微調(diào)整繪圖,因?yàn)槿掌谂艿搅藞D表外面。 記不記得我們在第一篇教程中討論的configure subplots按鈕? 我們不僅可以以這種方式配置圖表,我們還可以在代碼中配置它們,以下是我們設(shè)置這些參數(shù)的方式:

      現(xiàn)在,為了防止我們把你遺留在某個(gè)地方,這里是完整的代碼:

      結(jié)果為:

      第十一章 Unix 時(shí)間

      在這個(gè) Matplotlib 教程中,我們將介紹如何處理 unix 時(shí)間戳的轉(zhuǎn)換,然后在圖形中繪制日期戳。 使用 Yahoo Finance API,你會(huì)注意到,如果你使用較大的時(shí)間間隔,如1y(一年),你會(huì)得到我們一直在使用的日期戳,但如果你使用10d(10 天),反之你會(huì)得到 unix 時(shí)間的時(shí)間戳。

      Unix 時(shí)間是 1970 年 1 月 1 日以后的秒數(shù),它是跨程序的標(biāo)準(zhǔn)化時(shí)間表示方法。 也就是說,Matplotlib 并不歡迎 unix 時(shí)間戳。 這里是你可以使用 Matplotlib 來處理 unix 時(shí)間的方式:

      所以在這里,我們所做的是 unix 時(shí)間的寫入處理,并注釋掉我們以前的代碼,因?yàn)槲覀優(yōu)橹蟮氖褂枚4嫠?這里的主要區(qū)別是:

      這里,我們將時(shí)間戳轉(zhuǎn)換為日期戳,然后將其轉(zhuǎn)換為 Matplotlib 想要的時(shí)間。

      現(xiàn)在,由于某些原因,我的 unix 時(shí)間帶有另一行包含 6 個(gè)元素的數(shù)據(jù),并且它包含了術(shù)語label,因此,在我們解析數(shù)據(jù)的for循環(huán)中,我們?yōu)槟阍偬砑右粋€(gè)需要注意的檢查:

      現(xiàn)在你的圖表應(yīng)該類似:

      這里的所有扁平線條的原因是市場關(guān)閉。 有了這個(gè)短期數(shù)據(jù),我們可以得到日內(nèi)數(shù)據(jù)。 所以交易開放時(shí)有很多點(diǎn),然后市場關(guān)閉時(shí)就沒有了,然后又是一堆,然后又是沒有。

      第十二章 顏色和填充

      在本教程中,我們將介紹一些更多的自定義,比如顏色和線條填充。

      我們要做的第一個(gè)改動(dòng)是將plt.title更改為stock變量。

      現(xiàn)在,讓我們來介紹一下如何更改標(biāo)簽顏色。 我們可以通過修改我們的軸對象來實(shí)現(xiàn):

      如果我們運(yùn)行它,我們會(huì)看到標(biāo)簽改變了顏色,就像在單詞中那樣。

      接下來,我們可以為要顯示的軸指定具體數(shù)字,而不是像這樣的自動(dòng)選擇:

      接下來,我想介紹填充。 填充所做的事情,是在變量和你選擇的一個(gè)數(shù)值之間填充顏色。 例如,我們可以這樣:

      所以到這里,我們的代碼為:

      結(jié)果為:

      填充的一個(gè)問題是,我們可能最后會(huì)把東西都覆蓋起來。 我們可以用透明度來解決它:

      現(xiàn)在,讓我們介紹條件填充。 讓我們假設(shè)圖表的起始位置是我們開始買入 eBay 的地方。 這里,如果價(jià)格低于這個(gè)價(jià)格,我們可以向上填充到原來的價(jià)格,然后如果它超過了原始價(jià)格,我們可以向下填充。 我們可以這樣做:

      會(huì)生成:

      如果我們想用紅色和綠色填充來展示收益/損失,那么與原始價(jià)格相比,綠色填充用于上升(注:國外股市的顏色和國內(nèi)相反),紅色填充用于下跌? 沒問題! 我們可以添加一個(gè)where參數(shù),如下所示:

      這里,我們填充當(dāng)前價(jià)格和原始價(jià)格之間的區(qū)域,其中當(dāng)前價(jià)格高于原始價(jià)格。 我們給予它綠色的前景色,因?yàn)檫@是一個(gè)上升,而且我們使用微小的透明度。

      我們?nèi)匀徊荒軐Χ噙呅螖?shù)據(jù)(如填充)應(yīng)用標(biāo)簽,但我們可以像以前一樣實(shí)現(xiàn)空線條,因此我們可以:

      這向我們提供了一些填充,以及用于處理標(biāo)簽的空線條,我們打算將其顯示在圖例中。這里完整的代碼是:

      現(xiàn)在我們的結(jié)果是:

      第十三章 邊框和水平線條

      歡迎閱讀另一個(gè)定制教程,在這里我們使用 Matplotlib 討論邊框和水平線條。 有時(shí)候你可能想做的事情是改變邊框的顏色,或者甚至完全刪除它們。

      圖形的邊框基本上是圖形的邊界,其中有刻度線等東西。為了改變邊框的顏色,你可以做一些類似這樣的事情:

      在這里,我們引用了我們的邊框字典,表示我們要調(diào)整左邊框,然后我們使用set_color方法將顏色設(shè)置為'c',它是青色。

      如果我們想刪除所有邊框怎么辦? 我們可以這樣做:

      這是非常類似的代碼,刪除了右邊框和上邊框。

      很難看到我們修改了左邊框的顏色,所以讓我們通過修改線寬來使它變得很明顯:

      現(xiàn)在,左邊框變成了非常粗也非常顯眼的青色。 最后,如果我們想修改刻度參數(shù)怎么辦? 假如不想要黑色的日期,我們想要一些橙色的日期? 沒問題!

      現(xiàn)在我們的日期是橙色了! 接下來,讓我們來看看我們?nèi)绾卫L制一條水平線。 你當(dāng)然可以將你創(chuàng)建的一組新數(shù)據(jù)繪制成一條水平線,但你不需要這樣做。 你可以:

      所以在這里,我們的整個(gè)代碼是:

      結(jié)果為:

      第十四章 OHLC K 線圖

      在 Matplotlib 教程中,我們將介紹如何在 Matplotlib 中創(chuàng)建開,高,低,關(guān)(OHLC)的 K 線圖。 這些圖表用于以精簡形式顯示時(shí)間序列股價(jià)信息。 為了實(shí)現(xiàn)它,我們首先需要導(dǎo)入一些模塊:

      我們引入了ticker,允許我們修改圖表底部的ticker信息。 然后我們從matplotlib.finance模塊中引入candlestick_ohlc功能。

      現(xiàn)在,我們需要組織我們的數(shù)據(jù)來和 matplotlib 協(xié)作。 如果你剛剛加入我們,我們得到的數(shù)據(jù)如下:

      現(xiàn)在,我們需要構(gòu)建一個(gè) Python 列表,其中每個(gè)元素都是數(shù)據(jù)。 我們可以修改我們的loadtxt函數(shù),使其不解構(gòu),但隨后我們還是希望引用特定的數(shù)據(jù)點(diǎn)。 我們可以解決這個(gè)問題,但是我們最后可能只擁有兩個(gè)單獨(dú)的數(shù)據(jù)集。 為此,我們執(zhí)行以下操作:

      有了這個(gè),我們現(xiàn)在將 OHLC 數(shù)據(jù)列表存儲(chǔ)到我們的變量ohlc。 現(xiàn)在我們可以這樣繪制:

      圖表應(yīng)該是這樣:

      不幸的是,x軸上的datetime數(shù)據(jù)不是日期戳的形式。 我們可以處理它:

      此外,紅/黑著色依我看不是最好的選擇。 我們應(yīng)該使用綠色表示上升和紅色表示下降。 為此,我們可以:

      最后,我們可以將x標(biāo)簽設(shè)置為我們想要的數(shù)量,像這樣:

      現(xiàn)在,完整代碼現(xiàn)在是這樣:

      結(jié)果為:

      還要注意,我們從前面的教程中刪除了大部分ax1的修改。

      第十五章 樣式

      在這個(gè) Matplotlib 教程中,我們將討論樣式。 我們用于 Matplotlib 的樣式非常相似于用于 HTML 頁面的 CSS(層疊樣式表)。 正如你在這里可以看到的,我們對圖形所做的所有修改都會(huì)疊加,而且我們目前只有一個(gè)軸域。 我們可以使用for循環(huán),至少使代碼量降低,但我們也可以在 Matplotlib 中利用這些樣式。

      樣式頁的想法是將自定義樣式寫入文件,然后,為了使用這些更改并將其應(yīng)用于圖形,所有你需要做的就是導(dǎo)入樣式,然后使用該特定樣式。 這樣,讓我們假設(shè)你發(fā)現(xiàn)自己總是改變圖形的各種元素。 你不必為每個(gè)圖表編寫 25 ~ 200 行自定義代碼,只需將其寫入一個(gè)樣式,然后加載該樣式,并以兩行應(yīng)用所有這些更改即可! 讓我們開始吧。

      接下來,我們指定要使用的樣式。 Matplotlib 已經(jīng)有了幾種樣式。

      我們可以這樣來使用樣式:

      除了標(biāo)題,標(biāo)簽的顏色是灰色的,軸域的背景是淺灰色,我們可以立即分辨字體是不同的。 我們還注意到,網(wǎng)格實(shí)際上是一個(gè)白色的實(shí)線。 我們的 K 線圖保持不變,主要是因?yàn)槲覀冊谑潞蠖ㄖ扑?在樣式中加載時(shí),更改會(huì)生效,但如果在加載樣式后編寫新的自定義代碼,你的更改也會(huì)生效。

      因?yàn)槲覀冊噲D展示樣式模塊,但是讓我們繼續(xù),簡單繪制幾行,并暫且注釋掉 K 線圖:

      會(huì)生成:

      已經(jīng)比默認(rèn)值好多了!

      樣式的另一個(gè)例子是fivethirtyeight

      你可以這樣查看所有的可用樣式:

      我這里它提供了['bmh', 'dark_background', 'ggplot', 'fivethirtyeight', 'grayscale']。

      讓我們嘗試dark_background

      現(xiàn)在,如果你想制作自己的風(fēng)格呢? 首先,你需要找到樣式目錄。 為了實(shí)現(xiàn)它,如果你知道它在哪里,你可以前往你的 matplotlib 目錄,或者你可以找到該目錄。 如果你不知道如何找到該目錄,你可以執(zhí)行以下操作:

      這至少會(huì)告訴你pyplot模塊的位置。

      在 matplotlib 目錄中,你需要尋找mpl-data。 然后在那里,你需要尋找stylelib。 在 Windows 上 ,我的完整路徑是:C:\Python34\Lib\site-packages\matplotlib\mpl-data\stylelib

      那里應(yīng)該顯示了所有可用的.mplstyle文件。 你可以編輯、復(fù)制或重命名它們,然后在那里修改為你想要的東西。 然后,無論你用什么來命名.mplstyle文件,都要放在style.use中。

      第十六章 實(shí)時(shí)圖表

      在這篇 Matplotlib 教程中,我們將介紹如何創(chuàng)建實(shí)時(shí)更新圖表,可以在數(shù)據(jù)源更新時(shí)更新其圖表。 你可能希望將此用于繪制股票實(shí)時(shí)定價(jià)數(shù)據(jù),或者可以將傳感器連接到計(jì)算機(jī),并且顯示傳感器實(shí)時(shí)數(shù)據(jù)。 為此,我們使用 Matplotlib 的動(dòng)畫功能。

      最開始:

      這里,唯一的新增導(dǎo)入是matplotlib.animation as animation。 這是一個(gè)模塊,允許我們在顯示之后對圖形進(jìn)行動(dòng)畫處理。

      接下來,我們添加一些你熟悉的代碼,如果你一直關(guān)注這個(gè)系列:

      現(xiàn)在我們編寫動(dòng)畫函數(shù):

      我們在這里做的是構(gòu)建數(shù)據(jù),然后繪制它。 注意我們這里不調(diào)用plt.show()。 我們從一個(gè)示例文件讀取數(shù)據(jù),其內(nèi)容如下:

      我們打開上面的文件,然后存儲(chǔ)每一行,用逗號分割成xsys,我們將要繪制它。 然后:

      我們運(yùn)行動(dòng)畫,將動(dòng)畫放到圖表中(fig),運(yùn)行animate的動(dòng)畫函數(shù),最后我們設(shè)置了 1000 的間隔,即 1000 毫秒或 1 秒。

      運(yùn)行此圖表的結(jié)果應(yīng)該像往常一樣生成圖表。 然后,你應(yīng)該能夠使用新的坐標(biāo)更新example.txt文件。 這樣做會(huì)生成一個(gè)自動(dòng)更新的圖表,如下:

      第十七章 注解和文本

      在本教程中,我們將討論如何向 Matplotlib 圖形添加文本。 我們可以通過兩種方式來實(shí)現(xiàn)。 一種是將文本放置在圖表上的某個(gè)位置。 另一個(gè)是專門注解圖表上的繪圖,來引起注意。

      這里的起始代碼是教程 15,它在這里:

      所以這里是 Yahoo Finance API 的 eBay 的 OHLC K 線圖。 這里我們要講解的第一件事是向圖形添加文本。

      在這里,我們需要做一些事情。 首先,我們使用ax1.text添加文本。 我們使用我們的數(shù)據(jù),以坐標(biāo)形式給出此文本的位置。 首先給出文本的坐標(biāo),然后給出要放置的實(shí)際文本。 接下來,我們使用fontdict參數(shù)添加一個(gè)數(shù)據(jù)字典,來使用所用的字體。 在我們的字體字典中,我們將字體更改為serif,顏色為『深紅色』,然后將字體大小更改為 15。這將全部應(yīng)用于我們的圖表上的文本,如下所示:

      太棒了,接下來我們可以做的是,注解某個(gè)特定的繪圖。 我們希望這樣做來給出更多的信息。 在 eBay 的例子中,也許我們想解釋某個(gè)具體繪圖,或給出一些關(guān)于發(fā)生了什么的信息。 在股價(jià)的例子中,也許有一些發(fā)生的新聞會(huì)影響價(jià)格。 你可以注解新聞來自哪里,這將有助于解釋定價(jià)變化。

      這里,我們用ax1.annotate來注解。 我們首先傳遞我們想要注解的文本,然后傳遞我們讓這個(gè)注解指向的坐標(biāo)。 我們這樣做,是因?yàn)楫?dāng)我們注釋時(shí),我們可以繪制線條和指向特定點(diǎn)的箭頭。 接下來,我們指定xytext的位置。 它可以是像我們用于文本放置的坐標(biāo)位置,但是讓我們展示另一個(gè)例子。 它可以為軸域小數(shù),所以我們使用 0.8 和 0.9。 這意味著文本的位置在x軸的80%和y軸的90%處。 這樣,如果我們移動(dòng)圖表,文本將保持在相同位置。

      執(zhí)行它,會(huì)生成:

      根據(jù)你學(xué)習(xí)這個(gè)教程的時(shí)間,所指向的點(diǎn)可能有所不同,這只是一個(gè)注解的例子,其中有一些合理的想法,即為什么我們需要注解一些東西。

      當(dāng)圖表啟動(dòng)時(shí),請嘗試單擊平移按鈕(藍(lán)色十字),然后移動(dòng)圖表。 你會(huì)看到文本保持不動(dòng),但箭頭跟隨移動(dòng)并繼續(xù)指向我們想要的具體的點(diǎn)。 這很酷吧!

      最后一個(gè)圖表的完整代碼:

      現(xiàn)在,使用注解,我們可以做一些其他事情,如注解股票圖表的最后價(jià)格。 這就是我們接下來要做的。

      第十八章 注解股票圖表的最后價(jià)格

      在這個(gè) Matplotlib 教程中,我們將展示如何跟蹤股票的最后價(jià)格的示例,通過將其注解到軸域的右側(cè),就像許多圖表應(yīng)用程序會(huì)做的那樣。

      雖然人們喜歡在他們的實(shí)時(shí)圖表中看到歷史價(jià)格,他們也想看到最新的價(jià)格。 大多數(shù)應(yīng)用程序做的是,在價(jià)格的y軸高度處注釋最后價(jià)格,然后突出顯示它,并在價(jià)格變化時(shí),在框中將其略微移動(dòng)。 使用我們最近學(xué)習(xí)的注解教程,我們可以添加一個(gè)bbox

      我們的核心代碼是:

      我們使用ax1.annotate來放置最后價(jià)格的字符串值。 我們不在這里使用它,但我們將要注解的點(diǎn)指定為圖上最后一個(gè)點(diǎn)。 接下來,我們使用xytext將我們的文本放置到特定位置。 我們將它的y坐標(biāo)指定為最后一個(gè)點(diǎn)的y坐標(biāo),x坐標(biāo)指定為最后一個(gè)點(diǎn)的x坐標(biāo),再加上幾個(gè)點(diǎn)。我們這樣做是為了將它移出圖表。 將文本放在圖形外面就足夠了,但現(xiàn)在它只是一些浮動(dòng)文本。

      我們使用bbox參數(shù)在文本周圍創(chuàng)建一個(gè)框。 我們使用bbox_props創(chuàng)建一個(gè)屬性字典,包含盒子樣式,然后是白色(w)前景色,黑色(k)邊框顏色并且線寬為 1。 更多框樣式請參閱 matplotlib 注解文檔

      最后,這個(gè)注解向右移動(dòng),需要我們使用subplots_adjust來創(chuàng)建一些新空間:

      這里的完整代碼如下:

      結(jié)果為:

      第十九章 子圖

      在這個(gè) Matplotlib 教程中,我們將討論子圖。 有兩種處理子圖的主要方法,用于在同一圖上創(chuàng)建多個(gè)圖表。 現(xiàn)在,我們將從一個(gè)干凈的代碼開始。 如果你一直關(guān)注這個(gè)教程,那么請確保保留舊的代碼,或者你可以隨時(shí)重新查看上一個(gè)教程的代碼。

      首先,讓我們使用樣式,創(chuàng)建我們的圖表,然后創(chuàng)建一個(gè)隨機(jī)創(chuàng)建示例繪圖的函數(shù):

      現(xiàn)在,我們開始使用add_subplot方法創(chuàng)建子圖:

      它的工作原理是使用 3 個(gè)數(shù)字,即:行數(shù)(numRows)、列數(shù)(numCols)和繪圖編號(plotNum)。

      所以,221 表示兩行兩列的第一個(gè)位置。222 是兩行兩列的第二個(gè)位置。最后,212 是兩行一列的第二個(gè)位置。

      譯者注:原文此處表述有誤,譯文已更改。

      譯者注:221是縮寫形式,僅在行數(shù)乘列數(shù)小于 10 時(shí)有效,否則要寫成2,2,1。

      此代碼結(jié)果為:

      這就是add_subplot。 嘗試一些你認(rèn)為可能很有趣的配置,然后嘗試使用add_subplot創(chuàng)建它們,直到你感到滿意。

      接下來,讓我們介紹另一種方法,它是subplot2grid。

      刪除或注釋掉其他軸域定義,然后添加:

      所以,add_subplot不能讓我們使一個(gè)繪圖覆蓋多個(gè)位置。 但是這個(gè)新的subplot2grid可以。 所以,subplot2grid的工作方式是首先傳遞一個(gè)元組,它是網(wǎng)格形狀。 我們傳遞了(6,1),這意味著整個(gè)圖表分為六行一列。 下一個(gè)元組是左上角的起始點(diǎn)。 對于ax1,這是0,0,因此它起始于頂部。 接下來,我們可以選擇指定rowspancolspan。 這是軸域所占的行數(shù)和列數(shù)。

      結(jié)果為:

      顯然,我們在這里有一些重疊的問題,我們可以調(diào)整子圖來處理它。

      再次,嘗試構(gòu)思各種配置的子圖,使用subplot2grid制作出來,直到你感到滿意!

      我們將繼續(xù)使用subplot2grid,將它應(yīng)用到我們已經(jīng)逐步建立的代碼中,我們將在下一個(gè)教程中繼續(xù)。

      第二十章 將子圖應(yīng)用于我們的圖表

      在這個(gè) Matplotlib 教程中,我們將處理我們以前教程的代碼,并實(shí)現(xiàn)上一個(gè)教程中的子圖配置。 我們的起始代碼是這樣:

      一個(gè)主要的改動(dòng)是修改軸域的定義:

      現(xiàn)在,ax2是我們實(shí)際上在繪制的股票價(jià)格數(shù)據(jù)。 頂部和底部圖表將作為指標(biāo)信息。

      在我們繪制數(shù)據(jù)的代碼中,我們需要將ax1更改為ax2

      更改之后,代碼為:

      結(jié)果為:

      第二十一章 更多指標(biāo)數(shù)據(jù)

      在這篇 Matplotlib 教程中,我們介紹了添加一些簡單的函數(shù)來計(jì)算數(shù)據(jù),以便我們填充我們的軸域。 一個(gè)是簡單的移動(dòng)均值,另一個(gè)是簡單的價(jià)格 HML 計(jì)算。

      這些新函數(shù)是:

      你不需要太過專注于理解移動(dòng)均值的工作原理,我們只是對樣本數(shù)據(jù)來計(jì)算它,以便可以學(xué)習(xí)更多自定義 Matplotlib 的東西。

      我們還想在腳本頂部為移動(dòng)均值定義一些值:

      下面,在我們的graph_data函數(shù)中:

      在這里,我們計(jì)算兩個(gè)移動(dòng)均值和 HML。

      我們還定義了一個(gè)『起始』點(diǎn)。 我們這樣做是因?yàn)槲覀兿M覀兊臄?shù)據(jù)排成一行。 例如,20 天的移動(dòng)均值需要 20 個(gè)數(shù)據(jù)點(diǎn)。 這意味著我們不能在第 5 天真正計(jì)算 20 天的移動(dòng)均值。 因此,當(dāng)我們計(jì)算移動(dòng)均值時(shí),我們會(huì)失去一些數(shù)據(jù)。 為了處理這種數(shù)據(jù)的減法,我們使用起始變量來計(jì)算應(yīng)該有多少數(shù)據(jù)。 這里,我們可以安全地使用[-start:]繪制移動(dòng)均值,并且如果我們希望的話,對所有繪圖進(jìn)行上述步驟來排列數(shù)據(jù)。

      接下來,我們可以在ax1上繪制 HML,通過這樣:

      最后我們可以通過這樣向ax3添加移動(dòng)均值:

      我們的完整代碼,包括增加我們所用的時(shí)間范圍:

      代碼效果如圖:

      第二十二章 自定義填充、修剪和清除

      歡迎閱讀另一個(gè) Matplotlib 教程! 在本教程中,我們將清除圖表,然后再做一些自定義。

      我們當(dāng)前的代碼是:

      現(xiàn)在我認(rèn)為向我們的移動(dòng)均值添加自定義填充是一個(gè)很好的主意。 移動(dòng)均值通常用于說明價(jià)格趨勢。 這個(gè)想法是,你可以計(jì)算一個(gè)快速和一個(gè)慢速的移動(dòng)均值。 一般來說,移動(dòng)均值用于使價(jià)格變得『平滑』。 他們總是『滯后』于價(jià)格,但是我們的想法是計(jì)算不同的速度。 移動(dòng)均值越大就越『慢』。 所以這個(gè)想法是,如果『較快』的移動(dòng)均值超過『較慢』的均值,那么價(jià)格就會(huì)上升,這是一件好事。 如果較快的 MA 從較慢的 MA 下方穿過,則這是下降趨勢并且通常被視為壞事。 我的想法是在快速和慢速 MA 之間填充,『上升』趨勢為綠色,然后下降趨勢為紅色。 方法如下:

      下面,我們會(huì)碰到一些我們可解決的問題:

      這里,我們剪切和粘貼ax2日期格式,然后我們將x刻度標(biāo)簽設(shè)置為false,去掉它們!

      我們還可以通過在軸域定義中執(zhí)行以下操作,為每個(gè)軸域提供自定義標(biāo)簽:

      接下來,我們可以看到,我們y刻度有許多數(shù)字,經(jīng)?;ハ喔采w。 我們也看到軸之間互相重疊。 我們可以這樣:

      所以,這里發(fā)生的是,我們通過首先將nbins設(shè)置為 5 來修改我們的y軸對象。這意味著我們顯示的標(biāo)簽最多為 5 個(gè)。然后我們還可以『修剪』標(biāo)簽,因此,在我們這里, 我們修剪底部標(biāo)簽,這會(huì)使它消失,所以現(xiàn)在不會(huì)有任何文本重疊。 我們?nèi)匀豢赡艽蛩阈藜?code>ax2的頂部標(biāo)簽,但這里是我們目前為止的源代碼:

      當(dāng)前的源碼:

      看起來好了一些,但是仍然有一些東西需要清除。

      第二十三章 共享 X 軸

      在這個(gè) Matplotlib 數(shù)據(jù)可視化教程中,我們將討論sharex選項(xiàng),它允許我們在圖表之間共享x軸。將sharex看做『復(fù)制 x』也許更好。

      在我們開始之前,首先我們要做些修剪并在另一個(gè)軸上設(shè)置最大刻度數(shù),如下所示:

      以及

      現(xiàn)在,讓我們共享所有軸域之間的x軸。 為此,我們需要將其添加到軸域定義中:

      上面,對于ax2ax3,我們添加一個(gè)新的參數(shù),稱為sharex,然后我們說,我們要與ax1共享x軸。

      使用這種方式,我們可以加載圖表,然后我們可以放大到一個(gè)特定的點(diǎn),結(jié)果將是這樣:

      所以這意味著所有軸域沿著它們的x軸一起移動(dòng)。 這很酷吧!

      接下來,讓我們將[-start:]應(yīng)用到所有數(shù)據(jù),所以所有軸域都起始于相同地方。 我們最終的代碼為:

      下面我們會(huì)討論如何創(chuàng)建多個(gè)y軸。

      第二十四章 多個(gè) Y 軸

      在這篇 Matplotlib 教程中,我們將介紹如何在同一子圖上使用多個(gè) Y 軸。 在我們的例子中,我們有興趣在同一個(gè)圖表及同一個(gè)子圖上繪制股票價(jià)格和交易量。

      為此,首先我們需要定義一個(gè)新的軸域,但是這個(gè)軸域是ax2僅帶有x軸的『雙生子』。

      這足以創(chuàng)建軸域了。我們叫它ax2v,因?yàn)檫@個(gè)軸域是ax2加交易量。

      現(xiàn)在,我們在軸域上定義繪圖,我們將添加:

      我們在 0 和當(dāng)前交易量之間填充,給予它藍(lán)色的前景色,然后給予它一個(gè)透明度。 我們想要應(yīng)用幽冥毒,以防交易量最終覆蓋其它東西,所以我們?nèi)匀豢梢钥吹竭@兩個(gè)元素。

      所以,到現(xiàn)在為止,我們的代碼為:

      會(huì)生成:

      太棒了,到目前為止還不錯(cuò)。 接下來,我們可能要?jiǎng)h除新y軸上的標(biāo)簽,然后我們也可能不想讓交易量占用太多空間。 沒問題:

      首先:

      上面將y刻度標(biāo)簽設(shè)置為一個(gè)空列表,所以不會(huì)有任何標(biāo)簽了。

      譯者注:所以將標(biāo)簽刪除之后,添加新軸的意義是什么?直接在原軸域上繪圖就可以了。

      接下來,我們可能要將網(wǎng)格設(shè)置為false,使軸域上不會(huì)有雙網(wǎng)格:

      最后,為了處理交易量占用很多空間,我們可以做以下操作:

      所以這設(shè)置y軸顯示范圍從 0 到交易量的最大值的 3 倍。 這意味著,在最高點(diǎn),交易量最多可占據(jù)圖形的33%。 所以,增加volume.max的倍數(shù)越多,空間就越小/越少。

      現(xiàn)在,我們的圖表為:

      到這里,我們差不多完成了。 這里唯一的缺陷是一個(gè)好的圖例。 一些線條是顯而易見的,但人們可能會(huì)好奇移動(dòng)均值的參數(shù)是什么,我們這里是 10 和 30。 添加自定義圖例是下一個(gè)教程中涉及的內(nèi)容。

      第二十五章 自定義圖例

      在這篇 Matplotlib 教程中,我們將討論自定義圖例。 我們已經(jīng)介紹了添加圖例的基礎(chǔ)知識。

      圖例的主要問題通常是圖例阻礙了數(shù)據(jù)的展示。 這里有幾個(gè)選項(xiàng)。 一個(gè)選項(xiàng)是將圖例放在軸域外,但是我們在這里有多個(gè)子圖,這是非常困難的。 相反,我們將使圖例稍微小一點(diǎn),然后應(yīng)用一個(gè)透明度。

      首先,為了創(chuàng)建一個(gè)圖例,我們需要向我們的數(shù)據(jù)添加我們想要顯示在圖例上的標(biāo)簽。

      請注意,我們通過創(chuàng)建空行為交易量添加了標(biāo)簽。 請記住,我們不能對任何填充應(yīng)用標(biāo)簽,所以這就是我們添加這個(gè)空行的原因。

      現(xiàn)在,我們可以在右下角添加圖例,通過在plt.show()之前執(zhí)行以下操作:

      會(huì)生成:

      所以,我們可以看到,圖例還是占用了一些位置。 讓我們更改位置,大小并添加透明度:

      所有的圖例位于位置 9(上中間)。 有很多地方可放置圖例,我們可以為參數(shù)傳入不同的位置號碼,來看看它們都位于哪里。 ncol參數(shù)允許我們指定圖例中的列數(shù)。 這里只有一列,如果圖例中有 2 個(gè)項(xiàng)目,他們將堆疊在一列中。 最后,我們將尺寸規(guī)定為更小。 之后,我們對整個(gè)圖例應(yīng)用0.4的透明度。

      現(xiàn)在我們的結(jié)果為:

      完整的代碼為:

      現(xiàn)在我們可以看到圖例,但也看到了圖例下的任何信息。 還要注意額外函數(shù)fig.savefig。 這是自動(dòng)保存圖形的圖像的方式。 我們還可以設(shè)置所保存的圖形的前景色,使背景不是白色的,如我們的例子所示。

      這就是目前為止,我想要顯示的典型 Matplotlib 圖表。 接下來,我們將涉及Basemap,它是一個(gè) Matplotlib 擴(kuò)展,用于繪制地理位置,然后我打算講解 Matplotlib 中的 3D 圖形。

      第二十六章 Basemap 地理繪圖

      在這個(gè) Matplotlib 教程中,我們將涉及地理繪圖模塊Basemap。 Basemap是 Matplotlib 的擴(kuò)展。

      為了使用Basemap,我們首先需要安裝它。 為了獲得Basemap,你可以從這里獲取:http:///basemap/users/download.html,或者你可以訪問http://www.lfd./~gohlke/pythonlibs/。

      如果你在安裝Basemap時(shí)遇到問題,請查看pip安裝教程

      一旦你安裝了Basemap,你就可以創(chuàng)建地圖了。 首先,讓我們投影一個(gè)簡單的地圖。 為此,我們需要導(dǎo)入Basemap,pyplot,創(chuàng)建投影,至少繪制某種輪廓或數(shù)據(jù),然后我們可以顯示圖形。

      上面的代碼結(jié)果如下:

      這是使用 Miller 投影完成的,這只是許多Basemap投影選項(xiàng)之一。

      第二十七章 Basemap 自定義

      在這篇 Matplotlib 教程中,我們繼續(xù)使用Basemap地理繪圖擴(kuò)展。 我們將展示一些我們可用的自定義選項(xiàng)。

      首先,從上一個(gè)教程中獲取我們的起始代碼:

      我們可以從放大到特定區(qū)域來開始:

      這里的參數(shù)是:

      • llcrnrlat - 左下角的緯度

      • llcrnrlon - 左下角的經(jīng)度

      • urcrnrlat - 右上角的緯度

      • urcrnrlon - 右上角的經(jīng)度

      此外,坐標(biāo)需要轉(zhuǎn)換,其中西經(jīng)和南緯坐標(biāo)是負(fù)值,北緯和東經(jīng)坐標(biāo)是正值。

      使用這些坐標(biāo),Basemap會(huì)選擇它們之間的區(qū)域。

      下面,我們要使用一些東西,類似:

      這會(huì)畫出國家,并使用線寬為 2 的線條生成分界線。

      另一個(gè)選項(xiàng)是:

      這會(huì)用藍(lán)色線條畫出州。

      你也可以執(zhí)行:

      這會(huì)畫出國家。

      所以,我們的代碼是:

      很難說,但我們定義了美國的區(qū)縣的線條。 我們可以使用放大鏡放大Basemap圖形,就像其他圖形那樣,會(huì)生成:

      另一個(gè)有用的選項(xiàng)是Basemap調(diào)用中的『分辨率』選項(xiàng)。

      分辨率的選項(xiàng)為:

      • c - 粗糙

      • l - 低

      • h - 高

      • f - 完整

      對于更高的分辨率,你應(yīng)該放大到很大,否則這可能只是浪費(fèi)。

      另一個(gè)選項(xiàng)是使用etopo()繪制地形,如:

      使用drawcountries方法繪制此圖形會(huì)生成:

      最后,有一個(gè)藍(lán)色的大理石版本,你可以調(diào)用:

      會(huì)生成:

      目前為止的代碼:

      第二十八章 在 Basemap 中繪制坐標(biāo)

      歡迎閱讀另一個(gè) Matplotlib Basemap 教程。 在本教程中,我們將介紹如何繪制單個(gè)坐標(biāo),以及如何在地理區(qū)域中連接這些坐標(biāo)。

      首先,我們將從一些基本的起始數(shù)據(jù)開始:

      接下來,我們可以繪制坐標(biāo),從獲得它們的實(shí)際坐標(biāo)開始。 記住,南緯和西經(jīng)坐標(biāo)需要轉(zhuǎn)換為負(fù)值。 例如,紐約市是北緯40.7127西經(jīng)74.0059。 我們可以在我們的程序中定義這些坐標(biāo),如:

      之后我們將這些轉(zhuǎn)換為要繪制的xy坐標(biāo)。

      注意這里,我們現(xiàn)在已經(jīng)將坐標(biāo)順序翻轉(zhuǎn)為lon, lat(緯度,經(jīng)度)。 坐標(biāo)通常以lat, lon順序給出。 然而,在圖形中,lat, long轉(zhuǎn)換為y, x,我們顯然不需要。 在某些時(shí)候,你必須翻轉(zhuǎn)它們。 不要忘記這部分!

      最后,我們可以繪制如下的坐標(biāo):

      這個(gè)圖表上有一個(gè)青色的星,大小為 15。更多標(biāo)記類型請參閱:Matplotlib 標(biāo)記文檔。

      接下來,讓我們再畫一個(gè)位置,洛杉磯,加利福尼亞:

      這次我們畫出一個(gè)綠色三角,執(zhí)行代碼會(huì)生成:

      如果我們想連接這些圖塊怎么辦?原來,我們可以像其它 Matplotlib 圖表那樣實(shí)現(xiàn)它。

      首先,我們將那些xptypt坐標(biāo)保存到列表,類似這樣的東西:

      會(huì)生成:

      太棒了。有時(shí)我們需要以圓弧連接圖上的兩個(gè)坐標(biāo)。如何實(shí)現(xiàn)呢?

      我們的完整代碼為:

      結(jié)果為:

      這就是Basemap的全部了,下一章關(guān)于 Matplotlib 的 3D 繪圖。

      第二十九章 3D 繪圖

      您好,歡迎閱讀 Matplotlib 教程中的 3D 繪圖。 Matplotlib 已經(jīng)內(nèi)置了三維圖形,所以我們不需要再下載任何東西。 首先,我們需要引入一些完整的模塊:

      使用axes3d是因?yàn)樗枰煌N類的軸域,以便在三維中實(shí)際繪制一些東西。 下面:

      在這里,我們像通常一樣定義圖形,然后我們將ax1定義為通常的子圖,只是這次使用 3D 投影。 我們需要這樣做,以便提醒 Matplotlib 我們要提供三維數(shù)據(jù)。

      現(xiàn)在讓我們創(chuàng)建一些 3D 數(shù)據(jù):

      接下來,我們繪制它。 首先,讓我們展示一個(gè)簡單的線框示例:

      最后:

      我們完整的代碼是:

      結(jié)果為(包括所用的樣式):

      這些 3D 圖形可以進(jìn)行交互。 首先,您可以使用鼠標(biāo)左鍵單擊并拖動(dòng)來移動(dòng)圖形。 您還可以使用鼠標(biāo)右鍵單擊并拖動(dòng)來放大或縮小。

      第三十章 3D 散點(diǎn)圖

      歡迎閱讀另一個(gè) 3D Matplotlib 教程,會(huì)涉及如何繪制三維散點(diǎn)圖。

      繪制 3D 散點(diǎn)圖非常類似于通常的散點(diǎn)圖以及 3D 線框圖。

      一個(gè)簡單示例:

      結(jié)果為:

      要記住你可以修改這些繪圖的大小和標(biāo)記,就像通常的散點(diǎn)圖那樣。

      第三十一章 3D 條形圖

      在這個(gè) Matplotlib 教程中,我們要介紹 3D 條形圖。 3D 條形圖是非常獨(dú)特的,因?yàn)樗试S我們繪制多于 3 個(gè)維度。 不,你不能超過第三個(gè)維度來繪制,但你可以繪制多于 3 個(gè)維度。

      對于條形圖,你需要擁有條形的起點(diǎn),條形的高度和寬度。 但對于 3D 條形圖,你還有另一個(gè)選項(xiàng),就是條形的深度。 大多數(shù)情況下,條形圖從軸上的條形平面開始,但是你也可以通過打破此約束來添加另一個(gè)維度。 然而,我們會(huì)讓它非常簡單:

      注意這里,我們必須定義x、yz,然后是 3 個(gè)維度的寬度、高度和深度。 這會(huì)生成:

      第三十二章 總結(jié)

      歡迎閱讀最后的 Matplotlib 教程。 在這里我們將整理整個(gè)系列,并顯示一個(gè)稍微更復(fù)雜的 3D 線框圖:

      如果你從一開始就關(guān)注這個(gè)教程的話,那么你已經(jīng)學(xué)會(huì)了 Matplotlib 提供的大部分內(nèi)容。 你可能不相信,但Matplotlib 仍然可以做很多其他的事情! 請繼續(xù)學(xué)習(xí),你可以隨時(shí)訪問 Matplotlib.org,并查看示例和圖庫頁面。

      如果你發(fā)現(xiàn)自己大量使用 Matplotlib,請考慮捐助給 John Hunter Memorial 基金。

      注:空間曲面的畫法


        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多