2016-10-04 23 views
2

我在同一圖中有一個散點圖和一個線圖。我創建它使用繪圖掩蓋了matplotlib中的其他繪圖

fig, ax = plt.subplots() 
scat = plt.scatter([0], [0], color = 'r') 
line, = ax.plot(pos_data.x, pos_data.y, color = "k") 

的線圖目前模糊的散點圖,但我想它周圍的其他方式(比如,它應該看起來像線圖被首先呈現,並在上面的散點圖那一個)。

這可能嗎?

+2

如果反轉散點圖和線圖的順序會發生什麼? – briansrls

+0

@briansrls試過沒有成功:/ – pingul

回答

2

嘗試改變Z順序

plt.plot(x, y, 'r', zorder=1, lw=3) 
plt.scatter(x, y, s=120, zorder=2) 

的默認繪製順序爲軸線是補丁,線條,文字。該順序由zorder屬性確定。下面的默認 設置

 Artist      Z-order    
     Patch/PatchCollection  1 
     Line2D/LineCollection  2 
     Text       3 

您可以通過設置ZORDER更改個別藝術家的順序。 任何單獨的plot()調用都可以爲該特定項目的zorder設置一個值。

+0

它像一個魅力!請用必要的代碼而不是鏈接(即'plt.scatter(...,zorder = 10)')修改您的答案,因爲它可能會過時,我也很樂意接受答案。 – pingul

+0

@pingul這是一個很好的觀點,我剛剛做到了 – briansrls

1

來自here的重複問題。

您需要設置zorder對於每個圖形,值越大留在上面:

import matplotlib.pyplot as plt 

class Data: 
    pass 

pos_data = Data() 
pos_data.x = [1,2,3,4,5] 
pos_data.y = [7,2,5,3,4] 

fig = plt.figure() 
ax = fig.add_subplot(111) 
scat = ax.scatter(pos_data.x, pos_data.y, color = 'r', zorder=2) 
line = ax.plot(pos_data.x, pos_data.y, color = "k", zorder=1) 

您也可以通過設置標誌和顏色上的積達到同樣的事(見matplotlib.plot doc更多選項):

... 
line_with_markers = ax.plot(pos_data.x, pos_data.y, color = "k", 
          marker='o', markerfacecolor='red')