list - 使用列表理解绘制单独的数字
问题描述
我当前的代码为列表test中的每个元素生成重叠数字。如何使用列表理解生成两个单独的数字?(最好只使用一行代码)。
test=[[1, 2, 3, 4],[5, 6, 7, 8]]
[plt.plot(test[k]) for k in range(0,2)]
当前输出如下所示:
解决方案
正如 Matplotlib使用指南中所解释的,其plt.plot
工作方式与ax.plot
绘图方法相同:
对于每个 Axes 绘图方法,matplotlib.pyplot 模块中都有一个相应的函数,该函数在“当前”轴上执行该绘图,如果轴(及其父图形)尚不存在,则创建该轴(及其父图形)。
因此,当您运行作为示例给出的列表推导时,循环plt.plot
中的第一个方法调用会创建一个包含子 Axes 对象的新图形对象。然后,如 Matplotlib Pyplot 教程中关于使用多个图形和轴的部分所述:for
MATLAB 和 pyplot 具有当前图形和当前坐标区的概念。所有绘图功能都适用于当前坐标区。
这就是为什么循环中的所有后续plt.plot
调用都绘制在同一个图中的原因。要在单独的图形中绘制线条,必须为每次plt.plot
调用创建一个新图形,如下所示:
test = [[1, 2, 3, 4],[5, 6, 7, 8]]
for k in range(len(test)): plt.figure(), plt.plot(test[k])
编辑:根据 JohanC 的评论(关于问题),将列表理解替换为单行复合语句。尽管这违反了PEP 8 的建议,但它确实在满足单行要求的同时使代码更具可读性。
推荐阅读
- docker - 如何在 docker 中启用/禁用 buildkit?
- google-sheets - 谷歌表 - 自定义时间戳脚本不适用于 Andriod
- firebase - Flutter:动态链接未启动应用程序
- scala - Scala中递归数据类型的数据结构
- android - 如何使用默认手机设置更改 android 应用主题颜色?
- wordpress - 从产品数据 woocommerce 中删除简单产品
- javascript - Select2 在 document.ready 函数中不起作用
- reactjs - 我可以使用错误边界组件从 React 中的 API 获取数据吗?
- mysql - 如何将 React 原生表单连接到表达后端
- string - 是否可以通过使用特殊连字(半)不可见地将一些任意数据嵌入到主机 unicode 字符串中?