Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在地理点打印上覆盖文字标签?_Python_Geopandas_Hvplot - Fatal编程技术网

Python 如何在地理点打印上覆盖文字标签?

Python 如何在地理点打印上覆盖文字标签?,python,geopandas,hvplot,Python,Geopandas,Hvplot,我正在尝试将标签添加到在平铺地图上显示点的hvplot 我的GeoDataFramegdf如下所示: id geometry 8911 POINT (5.79557 53.20121) 8912 POINT (5.76973 53.18031) 8913 POINT (5.78159 53.20088) 8914 POINT (5.75442 53.20394) 8915 POINT (5.76594 53.21173) 将这些点添加到地图很容易

我正在尝试将标签添加到在平铺地图上显示点的hvplot

我的GeoDataFrame
gdf
如下所示:

  id                  geometry
8911  POINT (5.79557 53.20121)
8912  POINT (5.76973 53.18031)
8913  POINT (5.78159 53.20088)
8914  POINT (5.75442 53.20394)
8915  POINT (5.76594 53.21173)
将这些点添加到地图很容易:

gdf.hvplot(geo=True,tiles=True)
然后,我尝试使用类似的方式绘制文本标签,但这不起作用

gdf.hvplot.labels(geo=True,tiles=True,text='id')
它给了我这个错误

Traceback (most recent call last):

  File "<ipython-input-138-73570b6a686e>", line 1, in <module>
    centroid_labels = dfl.hvplot.labels(geo=True, tiles=True, text='id')

  File "C:\Users\user\Miniconda3\envs\otp\lib\site-packages\hvplot\plotting\core.py", line 574, in labels
    return self(x, y, text=text, kind='labels', **kwds)

  File "C:\Users\user\Miniconda3\envs\otp\lib\site-packages\hvplot\plotting\core.py", line 79, in __call__
    return self._get_converter(x, y, kind, **kwds)(kind, x, y)

  File "C:\Users\user\Miniconda3\envs\otp\lib\site-packages\hvplot\converter.py", line 1097, in __call__
    obj = method(x, y)

  File "C:\Users\user\Miniconda3\envs\otp\lib\site-packages\hvplot\converter.py", line 1688, in labels
    text = self.kwds.get('text', [c for c in data.columns if c not in (x, y)][0])

IndexError: list index out of range
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
质心标签=dfl.hvplot.labels(geo=True,x=dfl.geometry.x,y=dfl.geometry.y,tiles=True,text='id')
文件“C:\Users\user\Miniconda3\envs\otp\lib\site packages\hvplot\plotting\core.py”,第574行,在标签中
返回自我(x,y,text=text,kind='labels',**kwds)
文件“C:\Users\user\Miniconda3\envs\otp\lib\site packages\hvplot\plotting\core.py”,第79行,在调用中__
返回自我。获取转换器(x,y,种类,**kwds)(种类,x,y)
文件“C:\Users\user\Miniconda3\envs\otp\lib\site packages\hvplot\plotting\core.py”,第83行,在get转换器中
x=x或参数pop('x',无)
文件“C:\Users\user\Miniconda3\envs\otp\lib\site packages\pandas\core\generic.py”,第1442行,非零__
升值误差(
ValueError:序列的真值不明确。请使用a.empty、a.bool()、a.item()、a.any()或a.all()。

我可以通过将CRS转换为()来实现这一点,这可能适合您的目的,也可能不适合您的目的

作为旁注,如果能就这样的问题进行讨论,那就太好了

以下是有效的方法:

将geopandas导入为gpd
作为pd进口熊猫
导入hvplot.pandas
将地理视图作为gv导入
从geoviews将瓷砖源作为GVT导入
原始=“8911点(5.79557 53.20121)
8912点(5.76973 53.18031)
8913点(5.78159 53.20088)
8914分(5.75442 53.20394)
8915点(5.76594 53.21173)”
数据=[([0]、[2]、[1])用于[[uu.replace(“(”,“)。replace(“),”)。split()用于原始分割(“\n”)]]
df=pd.DataFrame(数据,列=[“labels”,“x”,“y”]).astype({“labels”:str})
gdf=gpd.GeoDataFrame(df,geometry=gpd.points_from_xy(df.x,df.y,crs=“EPSG:4326”))
瓷砖=gvts.CartoLight
points=gdf.hvplot(geo=True,tiles=“CartoLight”)
labels=gdf.to_crs(“EPSG:3857”).assign(x=lambda-df:df.geometry.x,y=lambda-df:df.geometry.y)。hvplot.labels(text=“labels”,x=“x”,y=“y”)
(点*标签*瓷砖).选项(高度=600,宽度=800)
我认为这应该奏效:

gdf.hvplot.labels(text=“labels”,geo=True)
这实际上只是围绕最初的问题,可能值得在github上报告这个问题

Traceback (most recent call last):

  File "<ipython-input-143-0eaefd24cbe6>", line 1, in <module>
    centroid_labels = dfl.hvplot.labels(geo=True, x=dfl.geometry.x, y=dfl.geometry.y, tiles=True, text='id')

  File "C:\Users\user\Miniconda3\envs\otp\lib\site-packages\hvplot\plotting\core.py", line 574, in labels
    return self(x, y, text=text, kind='labels', **kwds)

  File "C:\Users\user\Miniconda3\envs\otp\lib\site-packages\hvplot\plotting\core.py", line 79, in __call__
    return self._get_converter(x, y, kind, **kwds)(kind, x, y)

  File "C:\Users\user\Miniconda3\envs\otp\lib\site-packages\hvplot\plotting\core.py", line 83, in _get_converter
    x = x or params.pop('x', None)

  File "C:\Users\user\Miniconda3\envs\otp\lib\site-packages\pandas\core\generic.py", line 1442, in __nonzero__
    raise ValueError(

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().