2017-06-15 75 views
1

我從shape文件繪製在python地區分佈圖製作表格的傳奇,我想自定義情節的傳​​說,我使用的代碼波紋管:如何使用matplotlib和Python

import pandas as pd 
import pysal as ps 
import geopandas as gp 
import numpy as np 
import matplotlib.pyplot as plt 

pth = 'outcom.shp' 
tracts = gp.GeoDataFrame.from_file(pth) 
ax = plot_dataframe(tracts, column='Density', scheme='QUANTILES', k=4, colormap=plt.cm.Blues, legend=True) 
plt.show() 

此外,我正在使用我在這裏發現的一個小補丁http://nbviewer.ipython.org/gist/jorisvandenbossche/d4e6efedfa1e4e91ab65以便可視化圖例。

這裏是我的結果: enter image description here 但是,我需要一些與此類似:

enter image description here

所以我現在的問題是我怎麼能有一個定製的傳奇

回答

1

您可以使用作爲傳說的plt.table

enter image description here

import matplotlib.pyplot as plt 
import numpy as np 

valeur = np.array([.1,.45,.7]) 
text=[["Faible","Ng<1,5" ],["Moyenne","1,5<Ng<2,5"],[u"Elevée", "Ng>2,5"]] 
colLabels = ["Exposition", u"Densité"] 


tab=plt.table(cellText=text, colLabels=colLabels, 
        colWidths = [0.2,0.2], loc='lower right', 
        cellColours=plt.cm.hot_r(np.c_[valeur,valeur])) 

plt.show() 

爲了這個錶鏈接到contourf情節,你可以做如下:

from matplotlib import pyplot as plt 
import numpy as np 

a = np.sort(np.random.rand(100)).reshape(10,10)*4 

levels = np.array([0,1.5,2.5,4]) 
sm = plt.contourf(a, levels = levels, cmap=plt.cm.hot_r) 


text=[["Faible","Ng<1,5" ],["Moyenne","1,5<Ng<2,5"],[u"Elevée", "Ng>2,5"]] 
colLabels = ["Exposition", u"Densité"] 

col = levels[:-1] + np.diff(levels)/2. 
cellcol = sm.cmap(sm.norm(np.c_[col,col])) 

tax = plt.gcf().add_axes([0,0,1,1]) 
tab=tax.table(cellText=text, colLabels=colLabels, 
        colWidths = [0.2,0.2], loc='lower left', 
        cellColours=cellcol) 

tax.axis("off") 
plt.show() 

enter image description here

+0

我照你說的,但它就像有沒有地圖和表格之間的鏈接,我得到了一個顯示默認顏色的地圖的結果,在底部有你編碼的表格1。 –

+0

我更新了答案,以使圖例使用輪廓圖中的顏色。 – ImportanceOfBeingErnest

+0

以及我真的很感謝你的幫助,但我沒有使用contourf圖,這是一個choropleth地圖,我用這個:ax = plot_dataframe(tracts,column ='Density',scheme ='QUANTILES',k = 4, colormap = plt.cm.Blues,legend = True),並且數據框不支持'levels'。 –