如何解决如何在 matplotlib 和 Jupyter notebook 中旋转 Contextily 底图
我正在使用 matplotlib 和 geopandas 在 Jupyter Notebook 中制作一组带有子图的图形。顶部图(A 和 B)包含地理空间数据并使用各种底图(航拍图像、阴影地貌等)。
如何将顶部的两个图旋转 90 度,使它们被拉长?
(当然,我需要重做 gridspec 布局,但这很容易;我不知道如何做的是:旋转图但保留用于绘制底图的地理信息。)
可重复的代码如下。
import pandas as pd
import geopandas as gpd
%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import contextily as ctx
from shapely.geometry import Point
plt.style.use('seaborn-whitegrid')
### DUMMY DATA
long,lat = [(-118.155,-118.051,-118.08),(38.89,39.512,39.1)]
q,t = [(0,70500,21000),(0,8000,-1200)]
df = pd.DataFrame(list(zip(q,t,lat,long)),columns =['q','t','lat','long'])
gdf = gpd.GeoDataFrame(df,geometry=gpd.points_from_xy(df['long'],df['lat']))
gdf.crs = "EPSG:4326"
### PLOTTING
fig = plt.figure(figsize=(10,7.5),constrained_layout=True)
gs = fig.add_gridspec(3,2)
ax1 = fig.add_subplot(gs[0:2,0])
ax2 = fig.add_subplot(gs[0:2,1],sharex = ax1,sharey = ax1)
ax3 = fig.add_subplot(gs[-1,:])
### PlotA
gdf.plot(ax = ax1)
ctx.add_basemap(ax1,crs='epsg:4326',source=ctx.providers.Esri.WorldShadedRelief)
ax1.set_aspect('equal')
ax1.set_title('Plot-A')
ax1.tick_params('x',labelrotation=90)
### PlotB
gdf.plot(ax = ax2)
ctx.add_basemap(ax2,source=ctx.providers.Esri.WorldImagery,alpha=0.5)
ax2.set_aspect('equal')
ax2.set_title('Plot-B')
ax2.tick_params('x',labelrotation=90)
### PlotC
ax3.scatter(df.q,df.t)
ax3.set_aspect('equal')
ax3.set_title('Plot-C')
ax3.set_xlabel('q')
ax3.set_ylabel('t')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。