Matplotlib dağılım çizim noktalarını çizgi ile birleştirir - Python


103

İki listem, tarihlerim ve değerlerim var. Matplotlib kullanarak onları planlamak istiyorum. Aşağıdaki, verilerimin dağılım grafiğini oluşturur.

import matplotlib.pyplot as plt

plt.scatter(dates,values)
plt.show()

plt.plot(dates, values) bir çizgi grafiği oluşturur.

Ama asıl istediğim, noktaların bir doğru ile birbirine bağlı olduğu bir dağılım grafiği.

R'ye benzer:

plot(dates, values)
lines(dates, value, type="l")

, bu da noktaları birleştiren bir çizgi ile örtüşen bir nokta dağılım grafiği veriyor.

Bunu python'da nasıl yaparım?


5
Çağrı show()hem çağrıldıktan sonra scatter()ve plot()ilk?

Yanıtlar:


136

Sanırım @Evert'in doğru cevabı var:

plt.scatter(dates,values)
plt.plot(dates, values)
plt.show()

Hangisi hemen hemen aynı

plt.plot(dates, values, '-o')
plt.show()

veya tercih ettiğiniz çizgi stili .


3
'linestyle' (gynormous) matplotlib belgelerinde gezinmek için iyi bir anahtar kelime arama ipucuydu.
Reb.Cabin

2
@aaronsnoswell Boyut ve renk, ilk örneğime göre, yalnızca hala çizebileceğiniz noktalar için anlamlıdır scatter. Soru, değişen çizgi kalınlığı veya rengi hakkında hiçbir şey söylemiyor, bu yüzden eleştirinizin biraz haksız olduğunu düşünüyorum, gerçekten.
Hannes Ovrén

28

Kırmızı çizgiler için bir nokta

plt.plot(dates, values, '.r-') 

veya x işaretleri ve mavi çizgiler için

plt.plot(dates, values, 'xb-')

Görünüşe göre sen, Evert ve kigurai iyi. Show () öğesini çağırmadan önce hem scatter () hem de plot () çağırabilirsiniz. Veya Steve Barnes'ın tanımladığı gibi çizgi ve nokta nitelikleriyle plot () 'u çağırın. Teşekkürler
brno792

14

Diğer cevaplarda verilenlere ek olarak, "zorder" anahtar kelimesi, farklı nesnelerin dikey olarak hangi sırayla çizileceğine karar vermeyi sağlar. Örneğin:

plt.plot(x,y,zorder=1) 
plt.scatter(x,y,zorder=2)

dağılım sembollerini çizginin üstüne çizerken

plt.plot(x,y,zorder=2)
plt.scatter(x,y,zorder=1)

çizgiyi dağılım sembollerinin üzerine çizer.

Örneğin, zorder demosuna bakın

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.