从颜色条中的等高线图添加某些线条

Add certain lines from contourplot in colorbar

我的问题 的后续问题。我每 10 行创建一次红色等高线,但现在我想在颜色条中包含这些线。我知道您可以通过以下方式在 colobar 中添加行:

CS2 = pyplot.contour(X,Y,Z,locator=ticker.LogLocator(), colors=color_levels, levels=levels, lw=2,norm=colors.LogNorm(),vmin=1,vmax =Z.max())
cbar.add_lines(CS2)

(我认为我不需要在此处指定所有变量,只需将 contour 函数的结果添加到 cbar 中即可。

但是,这会导致将所有等高线添加到颜色条中,但我只想要红色的。切片它们不起作用:

>>> CS2=CS2[5::10]
AttributeError: QuadContourSet instance has no attribute '__getitem__'

是否可以只将某些行添加到颜色栏?

我自己想出来了,但不是以想象的最好的方式。我创建了两种不同的等高线图,一种用于黑色,一种用于红线。只有红色的被赋予颜色条。它有效,但我认为它可以更好。代码的相关部分如下:

levels = np.logspace(0,np.log10(Z.max()), 100 )[30:80]
levels_black = [level for i,level in enumerate(levels) if (i+5) % 10 != 0]
levels_red =  [level for i,level in enumerate(levels) if (i+5) % 10 == 0]

CS2_black = pyplot.contour(X,Y,Z,locator=ticker.LogLocator(), colors='k', levels=levels_black, lw=2,norm=colors.LogNorm(),vmin=1,vmax =Z.max())
CS2_red = pyplot.contour(X,Y,Z,locator=ticker.LogLocator(), colors='r', levels=levels_red, lw=2,norm=colors.LogNorm(),vmin=1,vmax =Z.max())

cbar.add_lines(CS2_red)

这将产生如下图像,完全符合我的要求: