python matpoltlib绘制动态图_使用Python、Geopandas和Matplotlib制作gif动态
原標題:使用Python、Geopandas和Matplotlib制作gif動態
不需要Photoshop:僅使用Python和命令行制作動畫圖表。
作為一種編程語言,Python非常靈活。這使得有時可以在幾行代碼中進行大量不同的可視化成為可能。但是現在有了很多不同的圖表網站和軟件,為什么還要編寫代碼?我們不能只使用相關網站的GUI上傳數據,調整范圍,點擊導出png圖片結果嗎?
是,當然可以。有時,如果您需要快速的制作一次性圖表或地圖,這是最佳選擇。但是當你需要制作大量的地圖時,使用Python的強大功能會產生更好的結果。
本文將介紹如何創建一個能隨時間數據變化的動畫gif地圖。最重要的是,本教程將從頭到尾僅使用Python和一些命令行工具,無需在Photoshop或其他軟件中進行任何操作。
正如上面所說,本文的方法在具體工作中也許并不是最佳的方法,但如果考慮到制圖的速度、可重復性和一致性,我認為這是一個很好的方法。
為什么選擇GIF地圖?
在過去幾年中,gif圖表似乎已經在社交媒體上大受歡迎。像“金融時報”和“經濟學人”這樣的出版商花費了更多的時間來精簡和完善他們的數據產品,以便于在Twitter和Instagram等平臺上更好地展示信息。也許更重要的是,gif圖表允許在靜態圖表顯示的基礎上創建一個新的數據維度。
Gif動圖在數據可視化中的應用場景:
通過注釋或突出顯示來引導用戶瀏覽同一圖表中最重要的點
通過比較顯示兩個不同的圖表
顯示相同的圖表隨時間的變化(這是我們要做的)
該清單并非詳盡無遺,用例也在不斷擴大,可以說動態圖表既炫酷又實用(正確使用時)。
下面讓我們來開始制作。
如何制作一個gif動態地圖
這是您應該開始的:
加載shapefile(地圖文件)
加載要顯示的csv數據文件
融合這兩個類型的數據
繪制地圖并設計樣式
現在,我們將使用Python中for()循環的強大功能,將多個不同時期的數據展示在相同的地圖上。因為我們想要顯示隨時間的變化,我們需要確保我們的數據包含年份作為變量。為便于標記,我們確保數據的每個列標題都是年份數字(即不同年的數據分別放在不同列)。
為了遍歷每列的數據,我們需要一個字符串列表來調用每列的名稱。讓我們創建一個列表變量,其中包含每列的年份(格式化為字符串)。我們還設置一個輸出路徑,以便將每年的數據地圖保存到一個文件夾中。
最后,在創建地圖之前,我們要為vmin和max值設置一致的全局變量。這將設置顏色范圍的值。如果你事先沒有設置它,Matplotlib將在每次for循環迭代時改變等值區的范圍,因此很難看出值隨時間的增加或減少的方式。
寫for循環
for()循環使用起來相當簡單,for()循環中語法意思大概如下:
對于list_of_years列表中的每一年,運行以下代碼。
當我們列表中的所有年份都通過代碼時,停止循環。
如果您運行此代碼并打開剛剛設置的輸出路徑文件夾,您應該會看到許多地圖,每個地圖的顏色略有不同,代表不同年份的數據。您可能會想:一旦做成地圖動畫,我們將如何知道年份的變化?
我們可以在底部設置一個簡單的日期范圍(2007-2015),但for()循環可以為我們提供更好的解決方案。由于我們已經將每列的年份保存為變量中的字符串,因此我們可以為每個地圖添加不同的注釋(對應于數據的年份)。
根據我們的for()循環,變量'year'將是每次for循環運行的列的年份。使用這個邏輯,我們可以插入'year'作為fig.annotate()參數的變量。
現在,每次for循環運行時,不同的年份將作為注釋插入到地圖上。使用相同的邏輯,我們也可以將文件名設置為每年開始,這樣就很容易找到每年對應的地圖。在for()循環中添加此代碼將添加年份注釋。
重新運行代碼,您的地圖會替換為新地圖,每個地圖的左下角都有年份注釋。如果你從上到下翻閱地圖,你就可以了解到你的gif會是什么樣子。
制作GIF
我們在進行GIF制作之前,要將我們得到的所有png格式的地圖圖片,轉化為jpg格式,圖片格式轉化有多種方法,下面舉了一個在python中利用opencv(cv2)進行圖片格式轉化的例子,僅供參考。
接下來我們可以開始制作GIF動態地圖了,有很多方法可以制作GIF動圖,我們使用的是ImageMagick,原因有以下幾點:
它相對容易安裝和設置
它允許您在一行代碼中設置轉換時間,裁剪大小和文件格式
它超級快
ImageMagick的文檔非常詳盡。如果您尚未安裝它,請查看其官方文檔頁面。
首先檢查您是否正確安裝了ImageMagick:
在命令行中輸入并運行:
convert –version
如果已成功安裝了ImageMagick,將顯示包含版本和版權聲明的消息。在系統上安裝ImageMagick后,轉到包含我們剛制作的所有地圖的目錄。現在我們需要運行一行代碼來創建我們的gif。這行代碼的作用如下:
convert:獲取所有這些文件并進行更改
-delay 60:設置每個圖像在進入下一個圖像之間經過的時間
-loop 0:設置無限循環
插入將要轉換的所有文件名
my_map.gif
這是在終端中使用的代碼:
現在看看自動創建的新文件“new_map_normal.gif”,你看到的圖像應該如下:
使用gif地圖可以成為深入分析數據的一個很好的切入點。 此外,您可以將任何具有時間序列數據的圖表轉換為gif動圖 - 我們這里只是選擇了地圖,因為它看起來更炫酷。
如果您有任何疑問,歡迎與我交流,后面會在評論區給出源碼鏈接。返回搜狐,查看更多
責任編輯:
總結
以上是生活随笔為你收集整理的python matpoltlib绘制动态图_使用Python、Geopandas和Matplotlib制作gif动态的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机对口高考文化试卷,计算机对口高考模
- 下一篇: matlab heaviside,Mat