我正在构建一个带有基于Jupyter和Voila 的交互式绘图的 webapp 。里面的笔记本我用ipywidgets处理的交互性和%matplotlib widget后端,所以我可以更新我的阴谋没有重绘全数字(在不工作%matplotlib inline,并%matplotlib notebook在瞧不渲染)。
我的问题是我无法设置图形大小,使其与其画布或容器的大小相匹配,这些画布或容器会在窗口调整大小时自动调整大小。
这是我的情况的一个小工作示例:
%matplotlib widget
from IPython.display import display
import matplotlib.pyplot as plt
import ipywidgets as widgets
import numpy as np
# Output widget that will contain the figure
out = widgets.Output(layout = {
'border': '1px solid black',
# 'width': '100%' # Not needed and does not help
})
# Initializing the figure within out
with out:
fig, ax = plt.subplots(1, constrained_layout=True) …Run Code Online (Sandbox Code Playgroud) 我有一个笔记本(github 链接),我在其中使用 geopandas 绘制带有不同国家/地区颜色的地图。根据绘图的顺序,有时它不遵守我指定的 Figsize() 。我在 Ubuntu 20.04 和 Firefox 中本地运行的 jupyter 以及在 Chromium 中运行的 Binder 和 Colab 中重复看到了这种行为。
有人可以帮助我了解发生了什么事吗?这是一个错误还是我控制 geopandas/matplotlib 错误?
import matplotlib.pyplot as plt
import geopandas as gpd
world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
sixc = world[ world['continent'] != 'Antarctica' ]
asia = world[ world['continent'] == 'Asia' ]
noam = world[ world['continent'] == 'North America']
swed = world[ world['iso_a3'] == 'SWE' ]
# This works, makes a 2x1 landscapey aspect
axes = sixc.plot(figsize=(8,4), color='lightgrey')
asia.plot(ax=axes, color='green')
noam.plot(ax=axes, color='purple')
# …Run Code Online (Sandbox Code Playgroud) figsize ×3
python ×2
geopandas ×1
ipywidgets ×1
jupyter ×1
matplotlib ×1
pandas ×1
seaborn ×1
voila ×1