gpt4 book ai didi

Matplotlib 命名空间问题?

转载 作者:行者123 更新时间:2023-12-04 17:02:41 25 4
gpt4 key购买 nike

我有一个关于 Matplotlib.pyplot 和命名空间的问题。
请参阅以下代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.pyplot import cm

x=np.linspace(0,1,28)
color=iter(cm.gist_rainbow_r(np.linspace(0,1,28)))
plt.clf()
for s in range(28):
c=next(color)
plt.plot(x,x*s, c=c)

plt.show()

这个想法是用彩虹 map 的不同颜色绘制图表。
现在发生的情况是,在第一次执行时它可以工作,但随后事情变得很奇怪。
在多次连续执行中, map 将停止使用,而是使用默认 map 。

我看到问题可能出在 plot 函数中的“c=c”中,但我尝试过不同的命名“c”、“color”……,在这里找不到问题的系统性。

有人可以重现该问题并且(至少连续尝试 5 次左右的代码)能够解释,这里发生了什么?

谢谢

最佳答案

这是 mpl + python3.4+ 的已知问题,已在 mpl v1.5+ 中修复。

许多样式参数有多个别名(例如 'c' vs 'color'),mpl 没有正确合并,艺术家们基本上被告知两种不同的颜色,这在内部意味着有一个字典同时包含 'c''color'在里面。

在 python 3.4+ 中,字典迭代的进程到进程顺序默认是随机的,因为底层哈希表的种子是随机的(这是为了防止基于故意哈希表冲突的可能的 DOS 攻击)。在旧版本的 python 中,用户提供的颜色总是在迭代顺序的后面,所以事情巧合地起作用。

简单的解决方法 (iirc) 是使用 plot(x, y, color=c)或更新到 mpl 1.5.1。

关于Matplotlib 命名空间问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35200022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com