2017-06-15 73 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'。 –