在colorbar中添加contourplot中的某些线条

时间:2015-03-25 09:52:35

标签: python matplotlib contour colorbar

我的问题here中的后续问题。我每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__'

是否可以仅向色条添加某些线条?

1 个答案:

答案 0 :(得分:1)

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

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)

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