[PYTHON] Le tour de Jupyter 4

Suite de Jupyter's Tips 3

Qu'est-ce que c'est

Parmi les 15 figures ci-dessous, 3 images seront affichées au hasard [^ 1].

[^ 1]: Voir "09 Finke Ambiguous Parts" dans le livre "Encyclopedia of Ideas".

En guise de préparation, procédez d'abord comme suit:

jupyter_notebook


from IPython.display import display, SVG
import numpy as np, IPython.core.getipython
ss = """\
1/e50 50 50 50 url(#g) black 0.5
1/e50 50 50 50 url(#g)/r0 0 100 50 white/e 50 50 50 10 #E0E0E0 black 0.5
0/pM1,34_L35,10_L99,10_L66,34_L99,10_L99,75_L66,99 #E0E0E0 black 0.5/r1 34 65 65 #C0C0C0 black 0.5
0/e50 82 50 17 #E0E0E0 black 0.5/pM0,80_L50,0_L100,80 #E0E0E0 black 0.5
0/e90 50 10 30 #E0E0E0 black 0.5/pM90,20_L10,20_L10,80_L90,80 #E0E0E0 black 0.5/e10 50 10 30 #C0C0C0 black 0.5
0/pM10,70_C10,60_30,30_50,30_C70,40_50,60_70,70_C90,70_90,40_90,30 none black
0/pM10,70_C10,60_30,30_50,30_C70,40_50,60_70,70_C90,70_90,40_90,30 none black 10\
/pM10,69.2_C10,60_30,30_50,30_C70,40_50,60_70,70_C90,70_90,40_90,30.8 none white 8.4
0/pM0,70_L30,30_L100,30_L70,70_Z #E0E0E0 black 0.8
0/pM20,20_L20,80_L80,80 none black 10/pM20,21_L20,80_L79,80 none white 8.4
0/pM1,50_L80,25_L99,25_L25,50_M99,25_L99,50_L25,75_L25,50 #E0E0E0 black 0.5/r1 50 25 25 #C0C0C0 black 0.5
0/pM25,40_C50,-15_99,40_67,67_C60,70_50,80_50,98 none black 0.8/c 25 40 1.2/c 50 98 1.2
0/e20 39.5 16 24 gray black 0.5/e24 40 16 24 #C0C0C0 black 0.5/e24 40 2 3 #555/l24 40 84 60 gray 2\
/e80 59.5 16 24 gray black 0.5/e84 60 16 24 #C0C0C0 black 0.5/e84 60 2 3 #555
0/l10 10 90 90 black 10/l10.5 10.5 89.5 89.5 white 8.4/l10 90 90 10 black 10/l10.5 89.5 89.5 10.5 white 8.4
0/c50 50 40 none black 10/c50 50 40 none white 8.4
0/pM10,70_A40,40_0_0_1_90,70 none black 10/pM10,69.2_A40,39.2_0_0_1_90,69.2 none white 8.4""".splitlines()
tt = {
      'p':'path d fill stroke stroke-width'.split(),
      'l':'line x1 y1 x2 y2 stroke stroke-width'.split(),
      'c':'circle cx cy r fill stroke stroke-width'.split(),
      'e':'ellipse cx cy rx ry fill stroke stroke-width'.split(),
      'r':'rect x y width height fill stroke stroke-width'.split(),
}
def make_svg(ids, ss=ss, tt=tt):
    rs, n = [], len(ids)
    for i, j in enumerate(ids):
        rr = ['<g transform="translate(%d,0)">'%(i*120)]
        vv = ss[j].split('/')
        if vv[0] == '1':
            rr.append("""\
                <defs><radialGradient id="g" gradientUnits="userSpaceOnUse"
                  cx="50" cy="50" r="50" fx="20" fy="50">
                <stop offset="0%" stop-color="white" />
                <stop offset="100%" stop-color="gray" />
                </radialGradient></defs>""")
        for s in vv[1:]:
            uu = tt[s[0]]
            rr.append('<%s %s />'%(uu[0],' '.join('%s="%s"'%(u,
                a.replace('_',' ')) for u, a in zip(uu[1:], s[1:].split()))))
        rs.append('\n'.join(rr+['</g>']))
    return SVG('<svg width="%d" height="100">%s</svg>'%(n*120,'\n'.join(rs)))
def F_impl(s):
    return make_svg(np.random.choice(range(15), int(s) if s else 3, False))
ip = IPython.core.getipython.get_ipython()
if ip:
    ip.register_magic_function(F_impl, magic_name='F')

Essayez de courir

jupyter_notebook


F

image

jupyter_notebook


F

image

jupyter_notebook


for i in range(1,4):
    svg = %F {i}
    display(svg)

image

Vous pouvez d'abord l'évaluer en le mettant entre "{}". Vous pouvez également enregistrer le résultat dans une variable et l'utiliser.

c'est tout

Recommended Posts

Le tour de Jupyter 4
Astuce de Jupyter 5
Astuce de Jupyter 3
Le tour de Jupyter 2
astuces python
Jupyter commence
Extensions Jupyter NB
astuces numpy
Astuces Scapy
Jupyter Notebook: 4 trucs et astuces banals
Installation de Jupyter
L'astuce de Jupyter
Astuces Python
Astuces Python
Conseils Python Conda
Erreur d'installation de Jupyter
Mémo Jupyter Notebook
Présentation de Jupyter Notebook
Note d'étude Jupyter_006
Jupyter Lab commence
Gérer le processus Jupyter
Conseils personnels de Django
Conseils de débogage Python
Astuces de clic Python
Puissant ordinateur portable Jupyter
[pandas] Conseils GroupBy
De manière inattendue (?) Connaissance du bean Python
Golang avec Jupyter
Tensorflow mes propres conseils
Bash dans Jupyter
Astuces pour les modèles Django
Jupyter sur AWS
Conseils d'écriture sur tissu
Note d'étude Jupyter_002
Mot de passe du notebook Jupyter
Construire Jupyter Hub
Mémo Jupyter Notebook
Note d'étude Jupyter_008
Conseils de traçage LTTng
Note d'étude Jupyter_004
configuration de jupyter qtconsole
Étude Jupyter note_001
Note d'étude Jupyter_003
Note d'étude Jupyter_007
Collection de conseils chorégraphe
Note d'étude Jupyter_005
[Astuces] Enregistrez / copiez le graphique affiché dans Jupyter Lab