2015-03-25 29 views
0

從我的問題here後續提問。我每10行就創建一個紅色的等高線,但現在我想在這個彩色條上放置這些線。我知道,你可以通過在colobar添加行:在colorbar中添加contourplot中的某些行

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啄添加的結果。

然而,這將導致在添加所有contourlines的彩條,但我只是想有紅色的切片他們不工作:

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

是否有可能只會增加某些行彩條?

回答

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

相關問題