如何在matplotlib中为手动着色的图生成颜色条?

时间:2017-01-15 13:07:21

标签: python matplotlib

假设我需要自己控制线条颜色,例如:

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
for i in np.linspace(0, 1, 100):
    plt.plot([i,i+1,i+2], color=mpl.cm.viridis(i))

如何为这样的情节生成颜色条?

1 个答案:

答案 0 :(得分:2)

您需要创建一个没有任何参考轴的颜色条。这可以使用matplotlib.colorbar.ColorbarBase类来完成。另请参阅图库中的this example。 要使用它,您需要在绘图中创建一个新轴,颜色条应该放在其中;一种方法是使用make_axes_locatable

这是一个完整的例子。

import matplotlib as mpl
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
import numpy as np


for i in np.linspace(0, 1, 9):
    plt.plot([i,i+1,i+2], color=mpl.cm.viridis(i))

divider = make_axes_locatable(plt.gca())
ax_cb = divider.new_horizontal(size="5%", pad=0.05)    
cb1 = mpl.colorbar.ColorbarBase(ax_cb, cmap=mpl.cm.viridis, orientation='vertical')
plt.gcf().add_axes(ax_cb)

plt.show()

enter image description here