小编PTo*_*ley的帖子

Python Argparse 附加 nargs= >1

因此,我尝试创建一个解析器,它可以采用任意选择列表(要绘制的内容),并为每个选择指定可选参数。并且避开了子子解析器的想法,只使用以下形式的多个参数:

--plot foo --xlim 0 10 --ylim -5 5 --plot bar --xlim -5 5 --ylim 0 10 --clim 1e24 1e27
Run Code Online (Sandbox Code Playgroud)

但我似乎无法获得与 nargs=2 一起使用的附加操作:

>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo', action='append', nargs=2, type=int)
_AppendAction(option_strings=['--foo'], dest='foo', nargs=2, const=None, default=None,  type=<type 'int'>, choices=None, help=None, metavar=None)
>>> parser.parse_args("--foo 1 2 --foo 3 4")
usage: [-h] [--foo FOO FOO]
: error: unrecognized arguments: - - f o o   1   2   - - f o o   3 4
Run Code Online (Sandbox Code Playgroud)

我希望能得到一个列表列表或元组列表。argparse 是否不支持我想要的行为,或者我只是在实现中做错了什么?

python argparse

4
推荐指数
1
解决办法
3844
查看次数

Matplotlib和Ipython-notebook:精确显示将要保存的图形

目前,我正在大量使用ipython-notebook进行数值分析和数据绘制。在准备出版物质量图的过程中,需要进行很多调整以使布局正确,但是我无法通过ipython / matplotlib向我展示要在浏览器中保存的内容。使该过程比原本要痛苦的多,因为我必须继续打开新的输出文件进行检查。

有没有一种方法可以使以嵌入式方式显示的图像与保存的图像相同?

如下示例,facecolor ='gray'为清楚起见:

import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

fig = plt.figure(figsize=(6,4),facecolor='gray')
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
x = np.linspace(0,2*np.pi,1000)
y = np.sin(x)
ax.plot(x,y,label=r'$\sin(x)$')
ax.set_xlim(0,2*np.pi)
ax.set_ylim(-1.2,1.2)
ax.set_xlabel(r'$x$')
ax.set_ylabel(r'$y$')
ax.legend(loc='upper right', frameon=False)
fig.savefig('mypath.png',dpi=300, facecolor='gray')
plt.show()
Run Code Online (Sandbox Code Playgroud)

请注意,此处我已明确选择了轴尺寸,以使它们与生成的图像的两侧等距。这在保存的图像中得到尊重,但在笔记本中显示的图像中被忽略:

笔记本显示的图像:

笔记本显示图像

Savefig图片:

在此处输入图片说明

python matplotlib ipython ipython-notebook jupyter-notebook

4
推荐指数
1
解决办法
957
查看次数