python - 从 pyplot.plot 动作的循环中获取 ylim - 只有循环寄存器中的最后一个,其他一切都是 0、1
问题描述
目标 我想使用一个循环来生成不同的子图,并且在每次迭代中,我想传递每个子图的 ylims 以在另一个函数中使用。
问题
当我这样做时,我只得到最后一个子图的 ylims。其他的都是 0.0, 1.0。我正在覆盖变量:limits = plt.ylim()
每次迭代时,我都意识到了这一点,但是我认为在该迭代中打印它会显示变量并将其包含在 y 限制的字典中将有助于查看发生了什么。在打印中实例和更新字典实例,出来的值都是0.0,甚至以为1.0显然不是这样的。答案似乎很明显,但是我不知道如何通过循环来保存这些值。
示例代码
aa={'x':[1,2], 'y':[3,4]}
bb={'x':[10,20], 'y':[30,40]}
cc={'x':[15,23], 'y':[35,43]}
plot_names=['aa', 'bb', 'cc']
plot_dict={'aa':aa, 'bb':bb, 'cc':cc}
fig, axlist = plt.subplots(len(plot_dict))
lim_dict={}
for jj, ax in enumerate(axlist.flat):
print('jj = '+ plot_names[jj])
print('ax = '+str(ax))
ax.plot(plot_dict[plot_names[jj]]['x'], plot_dict[plot_names[jj]]['y'])
limits=plt.ylim()
lim_dict |= {plot_names[jj]:limits}
print(plot_names[jj] + str(limits))
print(lim_dict)
输出
jj = aa
ax = AxesSubplot(0.125,0.657941;0.775x0.222059)
aa(0.0, 1.0)
jj = bb
ax = AxesSubplot(0.125,0.391471;0.775x0.222059)
bb(0.0, 1.0)
jj = cc
ax = AxesSubplot(0.125,0.125;0.775x0.222059)
cc(34.6, 43.4)
{'aa': (0.0, 1.0), 'bb': (0.0, 1.0), 'cc': (34.6, 43.4)}
总结limits
您可以在输出中看到,循环外的
前两个打印实例和打印字典都lim_dict
显示值 0.0 和 1.0。为什么?
系统: VSCode Windows 10 中的 Python3(版本 3.9.1 64 位)ipynb 文件
解决方案
推荐阅读
- dataweave - Mule 4:XML 模块:如何使用 XPATH 从具有名称空间字段的 XML 消息中检索值?
- azure - 带有来自特定点的延续令牌的 Azure 存储 blob 列表
- c# - N个不同参数的报告
- django - allauth 未找到“登录”的反向。“登录”不是有效的视图函数或模式名称
- java - 在 Spring Boot 中加载外部库的配置
- php - Delete id if not in database from a value
- javascript - 在 reactjs 中从 JSON 获取数组
- datatable - Eclipse 在使用 Cucumber 数据表时无法找到 raw() 方法
- sql - 用于查找具有某些值的记录的 SQL 查询在同一个表中具有不同的 id
- java - 当我将 javaFX stage 的 re-sizable 属性设置为 false 时,为什么我的内容周围会出现空白?