2010-11-18 151 views
12

如果有人不知道:A cartogram是一種地圖,其中某些國家/地區相關的數字屬性縮放各個區域以使該屬性的密度(接近)恆定。一個例子是用Matplotlib繪製圖表?

Example cartogram

worldmapper.org

。在這個例子中,各國根據其人口進行調整,導致人口密度幾乎不變。

不用說,這真的很酷。有沒有人知道基於Matplotlib的庫來繪製這樣的地圖? worldmapper.org使用的方法在(1)中描述,所以如果沒有人實現這一點,它會讓我感到驚訝...

我也有興趣聽到其他cartogram庫,即使他們不是爲Matplotlib製作的。

(1)Michael T.Gastner和M.E.J.Newman, 用於產生密度均衡圖的基於擴散的方法, Proc。納特。科學院。科學。 USA,101,7499-7504(2004)。可在arXiv

+0

有一個很好的動畫示例[here](http://metrocosm.com/the-housing-value-of-every-county-in-the-us/),有一些(但可能不是全部)有關如何製作的詳細信息。 – naught101 2015-08-18 00:20:29

回答

4

this,雖然它是基於和不同的算法(儘管它在ESRI網站上,它不需要ArcGIS)。當然,一旦你有了cartogram,你可以將它繪製在matplotlib中。

+0

輝煌,謝謝!當我說「用Matplotlib」時,我想我很困惑自己。我想我正在考慮Matplotlib人們稱之爲工具包的東西,比如Map工具箱,但是我完全沒有理由爲什麼我真的想要這樣的東西。你的解決方案肯定會滿足:-) – gspr 2010-11-22 08:52:02

0

Here是一個使用D3製作製圖的Javascript插件。如果您不太關心地區大小的準確性,這是一個好的,簡單的解決方案。如果精度很重要,還有其他選項可以讓您更自由地使用算法參數來獲得更準確的結果。

這裏有兩個偉大的獨立的程序,我知道的:

Scapetoad是非常容易使用。只需給它一個shapefile,告訴它用於縮放的屬性,並設置一些精度參數。如果有任何疑問,this post描述該過程。

Carto3F更復雜,並且允許更高的準確性,但要弄清楚有點棘手 - 很多參數設置沒有很多文檔解釋它們。使用Python編寫的也有QGIS cartogram plugin。雖然我一直無法工作,所以不能對此發表評論。

0

總之,沒有。但紐曼有一個很好的實施他和加斯特納的方法on his website。安裝它很容易,它可以從命令行運行。以下是使用此軟件的工作流程示例。

  1. 計算某個區域的密度估計網格,例如,在Python中。將其存儲爲數字矩陣。
  2. 運行cart程序,將密度矩陣作爲命令行的輸入或Python中的子進程輸入。
  3. 該程序返回每個網格點的新座標列表。
  4. 通過interp程序將shapefile點移動到新的shapefile中以獲取轉換後的地圖。

在主頁上有很好的說明。