这是一个生成图的最小示例,该图说明了我的问题:
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
?