Python 为什么在本例中图形大小(y轴)会波动?

Python 为什么在本例中图形大小(y轴)会波动?,python,matplotlib,seaborn,geopandas,Python,Matplotlib,Seaborn,Geopandas,我有一张世界地图,在上面我用for循环反复绘制干旱地区 关于再现性,数据如下: 这很好,只是y轴在每次迭代时收缩或扩展了一小部分,但非常明显,从而产生了起伏的动画。如何消除这种行为 注意:明确设置ylim不会改变这一点。我还尝试将子批实例化移到for循环之外,但这会导致空输出 迭代输出: ax.set\u aspect('equal')防止我这边的移位: dr_geometry.year.unique()中y的: 清除输出(等待=真) 图,ax=plt.子批次(1,1,figsize=(15,1

我有一张世界地图,在上面我用for循环反复绘制干旱地区

关于再现性,数据如下:

这很好,只是y轴在每次迭代时收缩或扩展了一小部分,但非常明显,从而产生了起伏的动画。如何消除这种行为

注意:明确设置
ylim
不会改变这一点。我还尝试将
子批
实例化移到for循环之外,但这会导致空输出

迭代输出:

ax.set\u aspect('equal')
防止我这边的移位:

dr_geometry.year.unique()中y的
:
清除输出(等待=真)
图,ax=plt.子批次(1,1,figsize=(15,15))
世界几何图(ax=ax)
dr_geometry[dr_geometry.year==y]。绘图(ax=ax,color='red',edgecolor='black',线宽=0.1)
#显式设置纵横比
ax.set_方面(“相等”)
plt.show();

感谢您指出转换的原因:

.plot()
现在自动确定地理序列(或地理数据框)是在地理CRS中还是在投影CRS中,并使用
1/cos(s_y*pi/180)
s_y
作为地理序列y边界平均值的y坐标来计算地理方向。这将导致比当前硬编码的“相等”方面更好地表示实际形状


不幸的是,设置
ylim
不会改变任何东西,即使在每一侧都给它一个20的缓冲区:
set_ylim(-120120)
。另外,将实例化移到for循环之外会导致整个过程完全中断。@rocksNwaves查看ax.set_aspect(1)是否适用于您的终端查看此问题的解释是的,这对我也有效:)@martinfleis我查看了链接,但我恐怕无法很好地理解对话内容,从而理解与我的问题之间的关系。谢谢你的发帖。嗯,不确定。我下载了数据集并复制了它。手动设置在我这边也不起作用。@t我很感谢您的关注。说到底,也没那么可怕。像这样的小矛盾让我很烦。
import pandas as pd
import geopandas as gpd

import matplotlib.pyplot as plt
import seaborn as sns

from IPython.display import clear_output
sns.set_theme(style='whitegrid')

dr_geometry = gpd.read_file('data/dr_events.shp')
world_geometry = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))

for y in dr_geometry.year.unique():
    clear_output(wait=True)
    fig, ax = plt.subplots(1, 1, figsize=(15, 15))
    world_geometry.plot(ax=ax)
    dr_geometry[dr_geometry.year == y].plot(ax=ax, color='red', edgecolor='black', linewidth=0.1)
    plt.show();