旗下產(chǎn)業(yè): A產(chǎn)業(yè)/?A實習/?A計劃
全國統(tǒng)一咨詢熱線:010-5367 2995
首頁 > 熱門文章 > 大數(shù)據(jù)分析 > 大數(shù)據(jù)分析Python生成氣候溫度螺旋模型

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型

時間:2020-09-21來源:lb577.com點擊量:作者:Sissi
時間:2020-09-21點擊量:作者:Sissi




  該可視化顯示了1850年至1900年平均溫度的偏差。它在Twitter和Facebook上被轉(zhuǎn)發(fā)了數(shù)百萬次,甚至在里約奧運會開幕式上也顯示了該版本的版本。可視化非常引人注目,因為它可以幫助觀眾了解變化的溫度波動以及過去30年平均溫度的總體急劇上升。您可以在Ed Hawkins的網(wǎng)站上詳細了解這種可視化背后的動機。在大數(shù)據(jù)分析Python生成氣候溫度螺旋模型中,我們將逐步介紹如何在Python中重新創(chuàng)建動畫效果。我們將專門處理pandas(用于表示和修改數(shù)據(jù))和matplotlib(用于可視化數(shù)據(jù))。如果您不熟悉matplotlib,我們建議您仔細閱讀通過數(shù)據(jù)可視化課程探索數(shù)據(jù)可視化和講故事。在大數(shù)據(jù)分析Python生成氣候溫度螺旋模型中,我們將使用以下庫:
 

  1)Python 3.6

  2)pandas0.22

  3)Matplotlib 2.2.2
 

  數(shù)據(jù)清理
 

  基本數(shù)據(jù)由國外的數(shù)據(jù)發(fā)布,數(shù)據(jù)集可以直接下載
 

  在這里。Github上的openclimatedata存儲庫在此筆記本中包含一些有用的數(shù)據(jù)清理代碼。您需要向下滾動到標題為Global Temperatures的部分。以下代碼將文大數(shù)據(jù)分析Python生成氣候溫度螺旋模型件讀取到pandas數(shù)據(jù)框中:

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  然后,我們需要:
 

  1)將第一列拆分為month和year列

  2)重命名1列value

  3)選擇并保存除第一列(0)以外的所有內(nèi)容

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  保留我們的數(shù)據(jù)
 

  tidy,讓我們刪除包含2018年數(shù)據(jù)的行(因為這是唯一包含3個月而非全部12個月數(shù)據(jù)的年份)。

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  最后,讓我們計算1850到1900年全球溫度的平均值,然后從整個數(shù)據(jù)集中減去該值。為了簡化此操作,我們將創(chuàng)建一個
 

  使用year和month列的multiindex:

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  這樣,我們只修改了
 

  value列(實際溫度值)。最后,計算并減去1850至1900年的平均溫度,然后將索引重新設置為以前的水平。

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  直角坐標系與極坐標系
 

  重建Ed的GIF有幾個關鍵階段:
 

  1)學習如何繪制極坐標系

  2)轉(zhuǎn)換數(shù)據(jù)以進行極地可視化

  3)定制情節(jié)的美學

  4)逐年逐步完成可視化并將圖變成GIF
 

  我們將開始研究在
 

  極坐標系。您可能已經(jīng)看到的大多數(shù)圖(條形圖,箱形圖,散點圖等)都位于笛卡爾坐標系中。在此系統(tǒng)中:
 

  1)x和y(和z)的范圍可以從負無窮大到正無窮大(如果我們堅持實數(shù))

  2)中心坐標為(0,0)

  3)我們可以認為這個系統(tǒng)是矩形的

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  相反,極坐標系是圓形的,使用r和theta。所述r坐標規(guī)定了從中心的距離和范圍可以從0到無窮大。所述theta坐標指定從原點的角度可以從0到2 * pI范圍。

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  要了解有關極坐標系統(tǒng)的更多信息,建議您深入以下鏈接:
 

  1)維基百科:極坐標系

  2)NRICH:極坐標簡介
 

  為極坐標圖準備數(shù)據(jù)
 

  首先,讓我們了解一下如何在Ed Hawkins的原始氣候螺旋圖中繪制數(shù)據(jù)。一年的溫度值幾乎跨越了整個螺旋/圈。您會注意到該行從一月到十二月的跨度,但不再連接到一月。這只是GIF的1850幀:

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  這意味著我們需要按年份對數(shù)據(jù)進行子集化,并使用以下坐標:
 

  1)r:給定月份的溫度值,調(diào)整為不包含負值。

  a)Matplotlib支持繪制負值,但不支持您的思維方式。我們希望-0.1比0.1更靠近中心,這不是默認的matplotlib行為。

  b)我們還希望在繪圖原點周圍留一些空間,以將年份顯示為文本。

  2)theta:生成12個等距角度值,范圍從0到2 * pi。
 

  讓我們深入研究如何在matplotlib中僅繪制1850年的數(shù)據(jù),然后擴展到所有年份。如果您不熟悉在matplotlib中創(chuàng)建Figure和Axes對象,建議您使用
 

  數(shù)據(jù)可視化探索課程。要生成使用極坐標系統(tǒng)的matplotlib Axes對象,我們需要在創(chuàng)建projection參數(shù)"polar"時將其設置為。

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  默認極坐標圖如下所示:

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  要調(diào)整數(shù)據(jù)以使其不包含負溫度值,我們首先需要計算最小溫度值:
 

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  讓我們添加
 

  1 所有溫度值,因此它們將為正,但在原點周圍仍有一些空間可顯示文本:

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  我們還生成從0到2 * pi的12個均勻間隔的值,并使用前12個作為theta值:

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  要在極坐標投影上繪制數(shù)據(jù),我們?nèi)匀皇褂?br />  

  Axes.plot()方法,但現(xiàn)在第一個值對應于theta值列表,第二個值對應于r值列表。

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  這是這個情節(jié)的樣子:

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  調(diào)整美學
 

  為了使我們的情節(jié)接近埃德·霍金斯(Ed Hawkins),讓我們調(diào)整一下美學。在笛卡爾坐標系上正常繪制時,我們習慣于使用其他大多數(shù)matplotlib方法。在內(nèi)部,matplotlib考慮
 

  theta成為x和r成為y。為了了解這一點,我們可以使用以下命令隱藏兩個軸的所有刻度標簽:

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  現(xiàn)在,讓我們調(diào)整顏色。我們需要極坐標圖中的背景顏色為黑色,而極坐標周圍的顏色為灰色。實際上,我們使用了圖像編輯工具來查找確切的黑色和灰色顏色值,如下所示
 

  十六進制值:
 

  1)灰色:#323331

  2)黑色:#000100
 

  我們可以用
 

  fig.set_facecolor()設置圖的前景色和Axes.set_axis_bgcolor()背景色:

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  接下來,讓我們使用添加標題
 

  Axes.set_title():

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  最后,讓我們在中間添加文本,以指定要顯示的當前年份。我們希望此文本是起源
 

  (0,0),我們希望文本為白色,大字體并水平居中對齊。

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  這是該地塊現(xiàn)在的樣子(回想一下這只是1850年的情況)。

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  繪制剩余年份
 

  要繪制剩余年份的螺旋線,我們需要重復數(shù)據(jù)集中所有年份以外的操作。我們應該在此處進行的一項調(diào)整是手動設置
 

  r(或y在matplotlib中)。這是因為matplotlib根據(jù)使用的數(shù)據(jù)自動縮放繪圖的大小。因此,在最后一步中,我們觀察到僅1850的數(shù)據(jù)顯示在繪圖區(qū)域的邊緣。讓我們計算整個數(shù)據(jù)集中的最大溫度值,并添加大量的填充(以匹配Ed所做的操作)。

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  我們可以使用以下方式手動設置y軸限制
 

  Axes.set_ylim()

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  現(xiàn)在,我們可以使用for循環(huán)來生成其余數(shù)據(jù)。讓我們省去暫時生成中心文本的代碼(否則每年將在同一點生成文本,這將非?;靵y):

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  該圖如下所示:

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  自定義顏色
 

  現(xiàn)在,顏色感覺有些隨意,與原始可視化效果很好地傳達出的氣候逐漸變熱不符。在原始外觀中,顏色從藍色/紫色過渡到綠色,再過渡到黃色。這種配色方案被稱為
 

  順序顏色圖,因為顏色的漸變反映了數(shù)據(jù)中的某些含義。雖然在matplotlib中創(chuàng)建散點圖時很容易指定顏色圖(使用cm來自的參數(shù)Axes.scatter(),但是在創(chuàng)建線圖時沒有直接參數(shù)來指定顏色圖。Tony Yu撰寫了一篇很棒的簡短文章,介紹了如何在生成色圖時使用顏色圖散點圖,我們將在這里使用。本質(zhì)上,我們在調(diào)用方法時使用color(或c)參數(shù)Axes.plot()并從中繪制顏色,plt.cm.(index)這是我們使用色圖的方式viridis:

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  這將導致繪圖具有從藍色到綠色的連續(xù)顏色,但是要變?yōu)辄S色,我們實際上可以將計數(shù)器變量乘以
 

  2:

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  讓我們重新格式化我們的代碼以合并此順序顏色圖。

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  結果圖如下所示:

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  添加溫度環(huán)
 

  盡管我們現(xiàn)在所擁有的圖很漂亮,但是查看者實際上根本無法理解基礎數(shù)據(jù)。在可視化過程中的任何地方都沒有指示底層溫度值的跡象。原始可視化效果在0.0、1.5和2.0攝氏度下具有完整,均勻的環(huán),以幫助解決此問題。因為我們添加了
 

  1對于每個溫度值,在繪制這些均勻環(huán)時,我們也需要在此處做同樣的事情。藍色環(huán)原先為0.0攝氏度,因此我們需要在處生成一個環(huán)r=1。第一個紅色環(huán)原為1.5,因此我們需要將其繪制為2.5。最后一個為2.0,因此必須為3.0。

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  最后,我們可以添加指定環(huán)的溫度值的文本。所有這些文本值中的所有3個均處于0.5 * pi角度,并且距離值不同:

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
大數(shù)據(jù)分析Python生成氣候溫度螺旋模型
 

  因為“ 0.5 C”的文本被數(shù)據(jù)遮蓋了,所以我們可能要考慮為靜態(tài)繪圖版本隱藏它。
 

  生成GIF動畫
 

  現(xiàn)在,我們準備從繪圖中生成GIF動畫。動畫是一系列連續(xù)顯示的圖像。我們將使用
 

  matplotlib.animation.FuncAnimation功能來幫助我們。要利用此功能,我們需要編寫以下代碼:
 

  1)定義基本圖的外觀和屬性

  2)使用新數(shù)據(jù)更新每幀之間的繪圖
 

  調(diào)用時,我們將使用以下必需的參數(shù)
 

  FuncAnimation():
 

  1)fig:matplotlib Figure對象

  2)func:每幀之間調(diào)用的更新函數(shù)

  3)frames:幀數(shù)(我們希望每年一幀)

  4)interval:每幀顯示的毫秒數(shù)(每秒有1000毫秒)
 

  此函數(shù)將返回一個
 

  matplotlib.animation.FuncAnimation對象,它具有一種save()可用于將動畫寫入GIF文件的方法。以下是一些基本代碼,它們反映了我們將使用的工作流程:
 

大數(shù)據(jù)分析Python生成氣候溫度螺旋模型

 

  現(xiàn)在剩下的就是重新格式化我們之前的代碼,并將其添加到上面的框架中。我們鼓勵您自己執(zhí)行此操作,以練習使用matplotlib進行編程。
 

  這是最終動畫在較低分辨率下的樣子(以減少加載時間)。
 

  下一步
 

  在大數(shù)據(jù)分析Python生成氣候溫度螺旋模型中,我們探討了:
 

  1)如何在極坐標系上繪圖

  2)如何在極坐標圖中自定義文本

  3)如何通過內(nèi)插多個圖來生成GIF動畫
 

  您將獲得大部分方式來重建最初發(fā)布的出色的氣候螺旋GIF Ed Hawkins。以下是我們沒有探索的一些關鍵事項,但是我們強烈建議您自己進行:
 

  1)將月值添加到極坐標圖的外緣

  2)創(chuàng)建動畫時,將當前年份值添加到圖的中心。

  2.1)如果嘗試使用該FuncAcnimation()方法執(zhí)行此操作,則會注意到年份值相互堆疊(而不是清除上一年的值并顯示新的年份值)。

  3)在圖的左下角和右下角添加文本簽名。

  4)調(diào)整0.0 C,1.5 C和2.0 C的文字與靜態(tài)溫度環(huán)的交叉方式。



 

預約申請免費試聽課

填寫下面表單即可預約申請免費試聽!怕錢不夠?可先就業(yè)掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業(yè)?一地學習,可推薦就業(yè)!

?2007-2021/北京漫動者教育科技有限公司版權所有
備案號:京ICP備12034770號

?2007-2022/ lb577.com 北京漫動者數(shù)字科技有限公司 備案號: 京ICP備12034770號 監(jiān)督電話:010-53672995 郵箱:bjaaa@aaaedu.cc

京公網(wǎng)安備 11010802035704號

網(wǎng)站地圖