抱歉,如果这已在其他地方解决。在此站点上有关将对象传递给函数的搜索导致与c ++相关的帖子。 Google的结果指向与生成不同颜色图有关的条目。
我想使用matplotlib颜色图为线图着色。此外,我希望能够指定哪个颜色图,就像我所说的functrion。
import numpy as np, matplotlib.pyplot as plt
data = [[1,2,3,4], [5,6,7,8], [6,7,83,5]]
def plotting_function(data, color_map=plt.cm.viridis, plot_kwds=None)
colors = color_map(np.linspace(0,1,len(data))
if plot_kwds is None:
plt_kwds = {}
for i, y in enumerate(data):
x_axis = range(len(y))
plot_kwds['color'] = colors[i]
plt.plot(x_axis, y, **plot_kwds)
带有根据绿线着色的线条的图形。
一个数字,其线条的颜色不符合虹膜。
我意识到我可以通过将colors = plt.cm.viridis(np.linspace(0,1,len(data))
移到函数中来解决此问题,但是每次我想更改颜色时都弄乱了源代码是很不方便的。
如何将颜色图传递给自定义函数? 我缺少一种更简单的方法吗?
我非常感谢您的帮助!
答案 0 :(得分:1)
看不见效果的原因是因为您为初始词典使用了不同的名称:plt_kwds
而不是plot_kwds
我认为,您可以通过使用color
关键字在for循环内分配颜色来简单地实现所需的效果。您不需要plot_kwds
import numpy as np
import matplotlib.pyplot as plt
data = [[1,2,3,4], [5,6,7,8], [6,7,83,5]]
def plotting_function(data, color_map=plt.cm.viridis, plot_kwds=None):
colors = color_map(np.linspace(0,1,len(data)))
for i, y in enumerate(data):
x_axis = range(len(y))
plt.plot(x_axis, y, color=colors[i])
plotting_function(data)
回答第二个问题,您可以使用例如传递所需的颜色图
plotting_function(data, color_map=plt.cm.jet)