Saat ini saya sedang mempelajari pustaka matplotlib di python 3.4. Saya berlatih pada kode di mana pengguna seharusnya berinteraksi dengan plot hanya dengan mengkliknya. Ketika klik terjadi di suatu tempat di plot, dua hal yang seharusnya terjadi: cetak nilai y dan buat garis horizontal di plot tempat klik terjadi.

Apa yang saya dapatkan ketika saya mengklik di suatu tempat di plot adalah bahwa cetakan terjadi seperti yang diinginkan tetapi garis horizontal muncul hanya jika saya menekan F (yang menutupi layar plot). Dengan kata lain, garis dibuat ketika saya mengklik plot tetapi tidak muncul sampai saya menekan F. Adakah ide mengapa itu terjadi?

Kode:

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(np.random.rand(10))

def pick(event):
    plt.hlines(event.ydata,event.xdata-
    0.2,event.xdata+0.2,colors='r',linestyle='solid')
    print('Y coord = %f'%event.ydata)

fig.canvas.mpl_connect('button_press_event',pick)
plt.show()    
0
Victor José 31 Mei 2015, 00:25

1 menjawab

Jawaban Terbaik

Anda perlu menggunakan mode interaktif untuk memperbarui plot setelah setiap klik. Gunakan plt.ion() sebelum plt.show().

1
Molly 31 Mei 2015, 00:38
Menggunakannya sebelum plt.show() menyebabkan plot tidak muncul. Tetapi ketika saya meletakkannya sebagai baris pertama dari fungsi pick(event) itu berfungsi dengan baik. Terima kasih.
 – 
Victor José
31 Mei 2015, 00:45