2016-03-03 27 views
7
üst

üzerine merak ediyorum. Bir örnek: Gördüğünüz gibiMatplotlib kontrolü

enter image description here

, yeşil serisi mavi serinin üstünde ve her iki serisi (Bir dağılım grafiği ile yapılan) siyah noktalar üstünde bulunmaktadır. Siyah noktaların her iki dizinin de üstünde olmasını istiyorum.

Ben öncelikle aşağıdaki kodu

plt.plot(series1_x, series1_y) 
plt.plot(series2_x, series2_y) 
plt.scatter(series2_x, series2_y) 

yukarıda yaptığımız Sonra aşağıdaki

fig = plt.figure() 
ax1 = fig.add_subplot(111) 
ax1.plot(series1_x, series1_y) 

ax2 = fig.add_subplot(111) 
ax2.plot(series2_x, series2_y) 

ax3 = fig.add_subplot(111) 
ax3.scatter(series2_x, series2_y) 

Ve bazı varyasyonları, ancak hiçbir şans çalıştı.

plot işlevlerinin çevresinde gezinme, üzerinde çizimin üzerinde bir etkiye sahiptir, ancak scatter işlevini nereye koyduğum önemli değil, çizgiler noktaların üstünde.

NOT:

Windows'un 10 (bu örnek) üzerinde Python 3.5 kullanarak, ama çoğunlukla Python 3.4 Ubuntu duyuyorum.

NOT 2: Bu önemsiz bir sorun gibi görünebilir biliyorum ama noktalarla üstünde serisi noktaların rengi o kadar yoğun gizlenmiş olsun ki bir durum var ve

Bu durumlarda hangi noktaların hangi renk olduğunu net bir şekilde görebilmeleri için okuyucularıma ihtiyacım var, bu yüzden neden en üstte olması gereken noktalara ihtiyacım var.

+0

Her yeni grafik için altpip eksenlerini neden yeniden yaratıyorsunuz? Sadece bir altpip yaratabilirsiniz, sonra tüm çiziminizi orada yapabilirsiniz (ve üstte olanı kontrol etmek için aşağıdaki cevaplarda olduğu gibi zorlayıcıyı kullanın) – tom

+0

Ben orada gösterdiğim üzerinde "bazı değişiklikler" yaptığımı söyledim. bunu sadece altpip ile yapın. Ben normalde sadece plt.plot, plt.scatter, vb.Normalde eksenleri ve şekil nesnelerini endişelendirmiyorum, çünkü bunları farklı işlevler etrafında aktarmam ve her türlü süslü şeyi yapmam gerekmiyor. –

cevap

12

kullanımlar zorder kwarg yere geri daha düşük ZOrder arsa, ör

plt.plot(series1_x, series1_y, zorder=1) 
plt.plot(series2_x, series2_y, zorder=2) 
plt.scatter(series2_x, series2_y, zorder=3) 
+0

Harika, mükemmel çalışıyor. Güzel zarif bir çözüm. 'Zorder' değerinin, bir önceki başlangıçtaki 'zorder' ile baştan başa çıktığını varsayalım mı? Öyleyse, ben sadece “komplo” (birincisi) “zorder” demiyorum, “arsa” nın “zorder = 1”, bir sonraki “arsa” (zorder 'i belirtmeksizin) vardır,' zorder = 2', vb..? –

+0

Üzgünüm, yukarıdaki yorumumda, "zorder" değeri bir artı bir önceki zorluğun 'zorder' değeridir. " –

+0

Evet, testlerimde bu şekilde görünüyor. – bernie

1

bilerek ZOrder kullanarak ve değer yanında Başka bir çözüm: Sadece arsa komutunu kullanarak puan scatter'i belirleyebiliriz. plot(series2_x, series2_y, ' o') gibi bir şey. Boşluk içeren ' o' numaralı notu, satır değil, daire noktaları anlamına gelir. Bu şekilde onları eksen üzerinde çizme sırası onları üst üste koyar.

+0

Bu da çalışır, teşekkürler. Eğer 'arsa' kullanacak olursam, markanın boyutunu nasıl ayarlayabilirim? "Scatter" ile, boyutu ayarlamak için 's' parametresini ayarlıyorum. –

+1

Özel sorunuz için arsa komutunuza 'markersize = 10' veya' ms = 10' argümanını (veya istediğiniz sayıyı) ekleyebilirsiniz. Argümanların ve işlevselliklerin tam listesi burada görülebilir: http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.plot – zephyr

1

Evet, yapabilirsiniz. Sadece zorder parametresini kullanın. Değer ne kadar yüksekse, arsa üzerine o kadar artar.

fig = plt.figure() 
ax1 = fig.add_subplot(111) 
ax1.plot(series1_x, series1_y, zorder=3) 

ax2 = fig.add_subplot(111) 
ax2.plot(series2_x, series2_y, zorder=4) 

ax3 = fig.add_subplot(111) 
ax3.scatter(series2_x, series2_y, zorder=5) 

Alternatif olarak, aynı anda çizgi ve işaret çizimini gerçekleştirebilirsiniz. Hatta çizgi ve işaretleyici yüzü için farklı renkler ayarlayabilirsiniz.

fig = plt.figure() 
ax1 = fig.add_subplot(111) 
ax1.plot(series1_x, series1_y) 

ax2 = fig.add_subplot(111) 
ax2.plot(series2_x, series2_y, '-o', color='b', mfc='k') 

'-o' setleri arsa tarzı

hat ve daire belirteçleri, mavi color='b' grupları satır renk ve mfc='k' setleri siyaha işaretleyici yüz rengi.

+0

Bu cevabın neden reddedildiğinden emin değil - diğerleriyle aynı bilgiyi verdi (iyi) cevaplar ve iyi bir alternatif verdi. –