matplotlib / matplotlib/ipympl
Layout Templates and matplotlib figures
Personne n'a encore pris cette issue.
- Langage dominant
- Jupyter Notebook
- Étoiles
- 1.7k
- Forks
- 234
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
see #117 (issue) and #174 (PR) for some discussion on the topic.
@martinRenou I have been playing with using Layout Templates to stack figures in fun ways. Unfortunately, since matplotlib is currently responsible for the figure size, I end up with situations such as the following, where the figures are all cut off a bit. This is particularly noticable in jupyter notebook since the screen width is reduced.
In the following example, I stack a 4x4 of buttons and then a 4x4 of figures. The buttons stretch nicely, but the figures do not.
%matplotlib widget
import matplotlib.pyplot as plt
from ipywidgets import TwoByTwoLayout
from ipywidgets.widgets import Button, Layout
# Buttons
def button(name):
return Button(description = name, layout=Layout(height='auto', width='auto'))
a,b,c,d = button("1"), button("2"), button("3"), button("4"),
layout_2x2 = TwoByTwoLayout(top_left=a,
top_right=b,
bottom_left=c,
bottom_right=d)
display(layout_2x2)
# Figures
figs = []
plt.ioff()
for i in range(4):
fig, ax = plt.subplots()
ax.imshow([[1,2], [3,4]])
figs.append(fig.canvas)
a,b,c,d = figs
layout_2x2 = TwoByTwoLayout(top_left=a,
top_right=b,
bottom_left=c,
bottom_right=d)
display(layout_2x2)
In jupyter lab the problem is less so, but still unfortunate that figures basically ignore the flexbox layout the widgets are designed with. I would set the size with matplotlib, but since I don't know the size of the viewport the user is using, it's likely that the size I choose will be too small or too large depending on the user.
I don't have a concrete solution at hand, but I'm wondering if we can come up with some logic that preserves aspect ratio but otherwise fills a widget to its fullest extent?
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par reproduire l’exemple Layout Templates de l’issue dans Jupyter Notebook et JupyterLab, puis lisez la discussion dans #117 et le travail existant dans #174. Le résultat souhaité n’est pas encore défini ; clarifiez une approche permettant aux figures matplotlib de remplir la disposition du widget tout en conservant leur rapport hauteur/largeur, puis déterminez comment le comportement devrait être vérifié.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- jupyter-notebook, matplotlib
- Domaine
- frontend
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 25/100