【发布时间】:2019-04-08 22:46:25
【问题描述】:
我有一个地理空间绘图数据框,并且想要绘制它。
我正在开发一个由 Databricks 运行的 Jupyter 笔记本。
我下载了一个 shapefile (https://data.london.gov.uk/download/statistical-gis-boundary-files-london/9ba8c833-6370-4b11-abdc-314aa020d5e0/statistical-gis-boundaries-london.zip),并使用以下方法仅对伦敦的一部分进行了子集化:
import geopandas as gpd
import descartes
import pandas as pd
import matplotlib.pyplot as plt
fp = '/dbfs/FileStore/tables/LondonShapeFile/OA_2011_London_gen_MHW.shp'
map_df = gpd.read_file(fp, encoding="utf-8")
orp = map_df[map_df['WD11NM_BF']=='Orpington']
print(orp.shape)
orp.plot()
我明白了:
(50, 18)
Out[95]: <matplotlib.axes._subplots.AxesSubplot at 0x7f064e8df5c0>
我没有得到情节,所以尝试了:
%matplotlib inline
但是得到了:
%matplotlib inline is not supported in Databricks.
You can display matplotlib figures using display(). For an example, see https://docs.databricks.com/user-guide/visualizations/matplotlib-and-ggplot.html
按照https://docs.databricks.com/user-guide/visualizations/matplotlib-and-ggplot.html 上的建议示例工作,
import numpy as np
df3 = pd.DataFrame(np.random.randn(1000, 2), columns=['B', 'C']).cumsum()
df3['A'] = pd.Series(list(range(len(df3))))
dd=df3.plot(x='A', y='B')
display(dd.figure)
但是当我尝试用 geopandas df 实现类似的东西时,我得到了多个错误:
orp.dipslay()
AttributeError: 'GeoDataFrame' object has no attribute 'dipslay'
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<command-797544454504214> in <module>()
1 import descartes
----> 2 orp.dipslay()
/databricks/python/lib/python3.5/site-packages/pandas/core/generic.py in __getattr__(self, name)
2742 if name in self._info_axis:
2743 return self[name]
-> 2744 return object.__getattribute__(self, name)
2745
2746 def __setattr__(self, name, value):
AttributeError: 'GeoDataFrame' object has no attribute 'dipslay'
#
display(orp)
Exception: Cannot call display(<class 'geopandas.geodataframe.GeoDataFrame'>)
---------------------------------------------------------------------------
Exception Traceback (most recent call last)
<command-797544454504288> in <module>()
----> 1 display(orp)
/local_disk0/tmp/1553768511027-0/PythonShell.py in display(self, input, *args, **kwargs)
860 input.help() # This is going to display the help as a side-effect
861 else:
--> 862 raise Exception(genericErrorMsg)
863
864 def displayHTML(self, html):
Exception: Cannot call display(<class 'geopandas.geodataframe.GeoDataFrame'>)
Call help(display) for more info.
和
display(orp.plot())
/databricks/python/lib/python3.5/site-packages/matplotlib/pyplot.py:524: RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface (`matplotlib.pyplot.figure`) are retained until explicitly closed and may consume too much memory. (To control this warning, see the rcParam `figure.max_open_warning`).
max_open_warning, RuntimeWarning)
Exception: Cannot call display(<class 'matplotlib.axes._subplots.AxesSubplot'>)
---------------------------------------------------------------------------
Exception Traceback (most recent call last)
<command-797544454504291> in <module>()
----> 1 display(orp.plot())
/local_disk0/tmp/1553768511027-0/PythonShell.py in display(self, input, *args, **kwargs)
860 input.help() # This is going to display the help as a side-effect
861 else:
--> 862 raise Exception(genericErrorMsg)
863
864 def displayHTML(self, html):
Exception: Cannot call display(<class 'matplotlib.axes._subplots.AxesSubplot'>)
Call help(display) for more info.
【问题讨论】:
标签: python jupyter-notebook databricks