Плотная компоновка не работает в matplotlib при использовании фрейма данных geopandas?

#python #pandas #matplotlib

Вопрос:

Я пытаюсь построить некоторые точки и линии, используя matplotlib в python. Сюжет создан, как и ожидалось, однако, когда я строю с использованием панд, плотная компоновка не работает. Есть некоторая горизонтальная обивка.

Без Использования Панд:

Без использования Панд

С использованием Панд С использованием Панд

Вот код:

  import matplotlib.pyplot as plt
 import numpy as np
 import geopandas as gpd
 import shapely
 import shapely.wkt

 np_points=np.array([[72.86009142, 29.64570243],
   [72.85274575, 29.78470986],
   [72.93887416, 29.71148897],
   [72.83244904, 29.75750026],
   [72.90035624, 29.70708829],
   [73.00605427, 29.80544062],
   [72.94799582, 29.67417403],
   [72.73562998, 29.4550647 ],
   [72.76805617, 29.69165799],
   [73.13370963, 29.69718494],
   [72.922815  , 29.77253796]])

  data={'gid': 1,
     'geometry': shapely.wkt.loads('MULTILINESTRING  ((72.8626261872615 
    29.6481953436182, 72.8635141595275 29.6481903937668), (72.8635141595275 
   29.6481903937668, 72.8643668607309 29.6481856405281))')
      }

 df=gpd.GeoDataFrame([data],crs='epsg:4326').set_index('gid')

 fig, ax = plt.subplots(tight_layout=True)
 plt.ion()
 ##showing plot in full screen
 manager = plt.get_current_fig_manager()
 manager.window.showMaximized()

 ax.plot(np_points[1:,0], np_points[1:,1], 'ro',markersize=8,label ='A')
 ax.plot(np_points[[1,2]][:,0], np_points[[1,2]][:,1], 
 'ro',color='green',markersize=10,label ='B')

 df.plot(ax=ax,color='b',linestyle='-',linewidth=1)
 

Комментарии:

1. Помогает ли добавление plt.tight_layout() в конце вместо использования plt.subplots(tight_layout=True) ? Или явно позвонить plt.show() в самом конце?

2. Я попробовал и то, и другое, но при построении этой линии возникла одна и та же проблема.

3. Возможно, вам захочется включить некоторые тестовые данные для x и y и добавить импорт, чтобы создать минимальный жизнеспособный пример. Это увеличило бы вероятность того, что другие люди попытаются воспроизвести ваш код. Пожалуйста, подтвердите, что вы используете последние версии pandas и matplotlib. Поскольку панды просто создают очень тонкий слой в направлении matplotlib, проблема, которую вы описываете, очень маловероятна.

4. Я добавил примеры данных.

5. Какую среду вы используете? Какой бэкэнд matplotlib? (Значение по умолчанию выдает ошибку AttributeError: '_tkinter.tkapp' object has no attribute 'showMaximized' .