Bagaimana cara memplot beberapa fungsi pada gambar yang sama, di Matplotlib?

109

Bagaimana cara memplot 3 fungsi berikut (yaitu sin, cosdan penambahan), pada domain t, dalam gambar yang sama?

from numpy import *
import math
import matplotlib.pyplot as plt

t = linspace(0, 2*math.pi, 400)

a = sin(t)
b = cos(t)
c = a + b
pengguna3277335
sumber

Jawaban:

180

Untuk memplot beberapa grafik pada gambar yang sama, Anda harus melakukan:

from numpy import *
import math
import matplotlib.pyplot as plt

t = linspace(0, 2*math.pi, 400)
a = sin(t)
b = cos(t)
c = a + b

plt.plot(t, a, 'r') # plotting t, a separately 
plt.plot(t, b, 'b') # plotting t, b separately 
plt.plot(t, c, 'g') # plotting t, c separately 
plt.show()

masukkan deskripsi gambar di sini

Srivatsan
sumber
Oke, sekarang bagaimana Anda menghapus plot jika Anda ingin menggambar plot berikutnya pada grafik baru?
NoName
@NoName: Apa yang Anda maksud dengan "membersihkan plot"? Apakah Anda ingin menutup jendela plot dan membuat plot baru?
Srivatsan
Tidak apa-apa, angka default secara otomatis dihapus setelah dipanggil plt.show()sehingga membuat plot lagi tidak akan plot pada grafik yang sama.
NoName
51

Mungkin cara yang lebih pythonic untuk melakukannya.

from numpy import *
import math
import matplotlib.pyplot as plt

t = linspace(0,2*math.pi,400)
a = sin(t)
b = cos(t)
c = a + b

plt.plot(t, a, t, b, t, c)
plt.show()

masukkan deskripsi gambar di sini

Jash Shah
sumber
1
Bisakah Anda juga mengubah warna setiap plot menggunakan metode ini? Jika ya, bagaimana caranya?
nbro
4
Anda dapat menentukan warna dengan mengubah plt.plot()bagian sebagai: plt.plot(t, a, 'b', t, b, 'g', t, c, 'y'). Anda dapat menentukan warna berdasarkan warna yang diberikan di tautan ini: matplotlib.org/users/colors.html
Jash Shah
tidak bisakah kita menggunakan ion()dalam pyplot untuk ini terlalu benar, daripada memplot semuanya dalam satu baris?
toing_toing
@toing_toing Maaf saya tidak terlalu menyadarinya ion(). Bisakah Anda mengilustrasikan dengan sebuah contoh?
Jash Shah
1
bagaimana ini "lebih pythonic" dari jawaban yang diterima? "Eksplisit lebih baik daripada implisit." dan keterbacaan mendukung jawaban yang diterima imho (saya akui ini subjektif). Pemahaman cepat tentang panggilan plt.plot () padat Anda dimungkinkan dengan penggunaan variabel "t" yang serupa untuk tiga kurva, yang tidak sistematis. Karena itu, menurut saya menarik untuk mengetahui versi ini ada.
Blupon
6

Gunakan saja fungsinya plotsebagai berikut

figure()
...
plot(t, a)
plot(t, b)
plot(t, c)
leeladam
sumber