|
21 | 21 | importsix
|
22 | 22 |
|
23 | 23 | importsys
|
24 |
| -importwarnings |
25 | 24 | importtime
|
26 | 25 | importtypes
|
| 26 | +importwarnings |
27 | 27 |
|
28 | 28 | fromcyclerimportcycler
|
29 | 29 | importmatplotlib
|
@@ -389,28 +389,38 @@ def xkcd(scale=1, length=100, randomness=2):
|
389 | 389 | "xkcd mode is not compatible with text.usetex = True")
|
390 | 390 |
|
391 | 391 | frommatplotlibimportpatheffects
|
392 |
| -context=rc_context() |
393 |
| -try: |
394 |
| -rcParams['font.family']= ['xkcd','Humor Sans','Comic Sans MS'] |
395 |
| -rcParams['font.size']=14.0 |
396 |
| -rcParams['path.sketch']= (scale,length,randomness) |
397 |
| -rcParams['path.effects']= [ |
398 |
| -patheffects.withStroke(linewidth=4,foreground="w")] |
399 |
| -rcParams['axes.linewidth']=1.5 |
400 |
| -rcParams['lines.linewidth']=2.0 |
401 |
| -rcParams['figure.facecolor']='white' |
402 |
| -rcParams['grid.linewidth']=0.0 |
403 |
| -rcParams['axes.grid']=False |
404 |
| -rcParams['axes.unicode_minus']=False |
405 |
| -rcParams['axes.edgecolor']='black' |
406 |
| -rcParams['xtick.major.size']=8 |
407 |
| -rcParams['xtick.major.width']=3 |
408 |
| -rcParams['ytick.major.size']=8 |
409 |
| -rcParams['ytick.major.width']=3 |
410 |
| -except: |
411 |
| -context.__exit__(*sys.exc_info()) |
412 |
| -raise |
413 |
| -returncontext |
| 392 | +xkcd_ctx=rc_context({ |
| 393 | +'font.family': ['xkcd','Humor Sans','Comic Sans MS'], |
| 394 | +'font.size':14.0, |
| 395 | +'path.sketch': (scale,length,randomness), |
| 396 | +'path.effects': [patheffects.withStroke(linewidth=4,foreground="w")], |
| 397 | +'axes.linewidth':1.5, |
| 398 | +'lines.linewidth':2.0, |
| 399 | +'figure.facecolor':'white', |
| 400 | +'grid.linewidth':0.0, |
| 401 | +'axes.grid':False, |
| 402 | +'axes.unicode_minus':False, |
| 403 | +'axes.edgecolor':'black', |
| 404 | +'xtick.major.size':8, |
| 405 | +'xtick.major.width':3, |
| 406 | +'ytick.major.size':8, |
| 407 | +'ytick.major.width':3, |
| 408 | + }) |
| 409 | +xkcd_ctx.__enter__() |
| 410 | + |
| 411 | +# In order to make the call to `xkcd` that does not use a context manager |
| 412 | +# (cm) work, we need to enter into the cm ourselves, and return a dummy |
| 413 | +# cm that does nothing on entry and cleans up the xkcd context on exit. |
| 414 | +# Additionally, we need to keep a reference to the dummy cm because it |
| 415 | +# would otherwise be exited when GC'd. |
| 416 | + |
| 417 | +classdummy_ctx(object): |
| 418 | +def__enter__(self): |
| 419 | +pass |
| 420 | + |
| 421 | +__exit__=xkcd_ctx.__exit__ |
| 422 | + |
| 423 | +returndummy_ctx() |
414 | 424 |
|
415 | 425 |
|
416 | 426 | ## Figures ##
|
|