这是一个生成图的最小示例,该图说明了我的问题:
import matplotlib.pylab as plt
import matplotlib.mpl as mpl
import numpy as np
import random
data = [[random.random() for i in range(10)] for j in range(10)]
[XT, YT] = np.meshgrid(np.arange(1,10+1,1), np.arange(1,10+1,1))
cmap = mpl.cm.gray
fig, ax = plt.subplots()
CS = ax.contour(XT, YT, data,levels=np.arange(0,1+0.1,0.1),\
cmap=cmap,linewidths=0.75)
CB = plt.colorbar(CS, ticks=np.arange(0,1+0.1,0.1))
plt.show()
结果图如下所示:

我想将linewidths图中的等高线保留在,0.75但增加它们colorbar(为了更好的可读性)。
如何在不更改图linewidths中的colorbar情况下更改它们?
我最初尝试过CB.collections,但colorbar没有collections。此外,colorbar使用参数调用linewidths=4.0也不起作用(它是未知参数)。
评论
在输入这个问题时我有这个想法(橡皮鸭调试):
CS = ax.contour(XT, YT, data,levels=np.arange(0,1+0.1,0.1),\
cmap=cmap,linewidths=4.0)
CB = plt.colorbar(CS, ticks=np.arange(0,1+0.1,0.1))
plt.setp(CS.collections , linewidth=0.75)
基本上,将初始设置linewidths为 所需的水平colorbar,然后生成 ,然后colorbar在collections原始轮廓线上使用以减小它们的线宽。
这行得通。
但是:有没有办法直接linewidths控制colorbar?
