Matplotlib menghubungkan titik sebar dengan garis - Python

102

Saya punya dua daftar, tanggal dan nilai. Saya ingin memplotnya menggunakan matplotlib. Berikut ini membuat plot sebar data saya.

import matplotlib.pyplot as plt

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

plt.plot(dates, values) membuat grafik garis.

Tapi yang saya inginkan adalah sebar di mana titik-titik dihubungkan dengan garis.

Mirip dengan in R:

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

, yang memberi saya sebaran titik yang dilapisi dengan garis yang menghubungkan titik.

Bagaimana cara melakukan ini dengan python?

brno792
sumber
5
Menelepon show()setelah menelepon keduanya scatter()dan yang plot()pertama?

Jawaban:

136

Saya pikir @Evert punya jawaban yang benar:

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

Yang kurang lebih sama dengan

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

atau linestyle apa pun yang Anda sukai.

Hannes Ovrén
sumber
3
'linestyle' adalah petunjuk pencarian kata kunci yang baik untuk saya melalui dokumen matplotlib (gynormous).
Reb.Cabin
2
@aaronsnoswell Ukuran dan warna hanya masuk akal untuk poin, yang masih dapat Anda plot melalui scatter, sesuai contoh pertama saya. Pertanyaannya tidak menjelaskan apa-apa tentang ketebalan atau warna garis yang bervariasi, jadi menurut saya kritik Anda agak tidak adil, sungguh.
Hannes Ovrén
28

Untuk garis merah sebuah poin

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

atau untuk penanda x dan garis biru

plt.plot(dates, values, 'xb-')
Steve Barnes
sumber
Sepertinya Anda, Evert dan kigurai baik-baik saja. Anda bisa memanggil scatter () dan plot () sebelum memanggil show (). Atau panggil saja plot () dengan atribut garis dan titik seperti yang dijelaskan Steve Barnes. Terima kasih
brno792
14

Selain yang tersedia di jawaban lain, kata kunci "zorder" memungkinkan seseorang untuk memutuskan urutan di mana objek yang berbeda diplot secara vertikal. Misalnya:

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

plot simbol pencar di atas baris, sementara

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

plot garis di atas simbol pencar.

Lihat, misalnya, demo zorder

pengguna3756936
sumber