matplotlib中pl.cm.Spectral的pyplot等效物

5

我一直在使用pylab的代码,它运行良好:

import pylab as pl
colors = pl.cm.Spectral(np.linspace(0, 1, 10))

然而,我想离开pylab,因为文档中说:“对于非交互式绘图,通常优先使用pyplot接口”。因此,我尝试使用 matplotlib.cm,但找不到相应的等效物。有没有人能帮助我解决这个问题?

谢谢!

3个回答

9

使用matplotlib最常见的方式是在脚本中使用

import matplotlib.pyplot as plt

从那里,您可以使用plt.cm.Spectral或通过便捷函数plt.get_cmap访问Spectral色图。例如:

colors = plt.cm.Spectral(np.linspace(0, 1, 10))

或者
colors = plt.get_cmap('Spectral')(np.linspace(0, 1, 10))

等同于

colors = pl.cm.Spectral(np.linspace(0, 1, 10))

2

应该只需要使用cm.Spectral

In [123]:

import matplotlib.cm as cm
cm.Spectral(np.linspace(0,1,10))
Out[123]:
array([[ 0.61960787,  0.00392157,  0.25882354,  1.        ],
       [ 0.84721262,  0.26120723,  0.30519032,  1.        ],
       [ 0.96378316,  0.47743176,  0.28581316,  1.        ],
       [ 0.99346405,  0.74771243,  0.43529413,  1.        ],
       [ 0.99777009,  0.93087275,  0.63306423,  1.        ],
       [ 0.94425221,  0.97770089,  0.66205308,  1.        ],
       [ 0.74771243,  0.89803922,  0.627451  ,  1.        ],
       [ 0.45305653,  0.78154557,  0.64628991,  1.        ],
       [ 0.21607075,  0.55563248,  0.73194927,  1.        ],
       [ 0.36862746,  0.30980393,  0.63529414,  1.        ]])
In [119]:

import pylab as pl
pl.cm.Spectral(np.linspace(0, 1, 10))
Out[119]:
array([[ 0.61960787,  0.00392157,  0.25882354,  1.        ],
       [ 0.84721262,  0.26120723,  0.30519032,  1.        ],
       [ 0.96378316,  0.47743176,  0.28581316,  1.        ],
       [ 0.99346405,  0.74771243,  0.43529413,  1.        ],
       [ 0.99777009,  0.93087275,  0.63306423,  1.        ],
       [ 0.94425221,  0.97770089,  0.66205308,  1.        ],
       [ 0.74771243,  0.89803922,  0.627451  ,  1.        ],
       [ 0.45305653,  0.78154557,  0.64628991,  1.        ],
       [ 0.21607075,  0.55563248,  0.73194927,  1.        ],
       [ 0.36862746,  0.30980393,  0.63529414,  1.        ]])

cm.Spectral还存在吗?PyDev告诉我它不存在了。 - demongolem
是的,它确实可以。https://github.com/matplotlib/matplotlib/blob/72fa9c854e367cdebb940d311c02775a7e773244/lib/matplotlib/_cm.py#L1373。 - CT Zhu
1
后来我发现可以像这样访问它 cs = cm.get_cmap('Spectral')(1.*m/K),而不会引起 PyDev 的抱怨,所以这就是为什么在我的设置中有效的原因? - demongolem

1
import matplotlib.pyplot as plt

colors = plt.get_cmap('Spectral')(np.linspace(0, 1, 10))

现在,我是唯一可行的解决方案。
matplotlib移除了使用选项:
colors = plt.cm.Spectral(np.linspace(0, 1, 10))

在最新版本中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接