Saya ingin mendapatkan garis kisi horizontal dan vertikal di plot saya, tetapi hanya garis kisi horizontal yang muncul secara default. Saya menggunakan pandas.DataFrame
kueri dari sql dengan python untuk menghasilkan plot garis dengan tanggal pada sumbu x. Saya tidak yakin mengapa mereka tidak muncul pada tanggal dan saya telah mencoba mencari jawaban untuk ini tetapi tidak dapat menemukannya.
Yang saya gunakan untuk memplot grafik adalah kode sederhana di bawah ini.
data.plot()
grid('on')
data adalah DataFrame yang berisi tanggal dan data dari query sql.
Saya juga mencoba menambahkan kode di bawah ini tetapi saya masih mendapatkan output yang sama tanpa garis kisi vertikal.
ax = plt.axes()
ax.yaxis.grid() # horizontal lines
ax.xaxis.grid() # vertical lines
Ada saran?
python
matplotlib
pandas
Osmond Bishop
sumber
sumber
data.plot(grid="on")
bekerja untuk sayaJawaban:
Anda mungkin perlu memberikan argumen boolean dalam panggilan Anda, misalnya gunakan,
ax.yaxis.grid(True)
bukanax.yaxis.grid()
. Selain itu, karena Anda menggunakan keduanya, Anda dapat menggabungkannyaax.grid
, yang berfungsi pada keduanya, daripada melakukannya sekali untuk setiap dimensi.ax = plt.gca() ax.grid(True)
Itu seharusnya memilah Anda.
sumber
plt.show()
ipython --pylab
, dan lakukanplt.grid(True)
segera - apakah Anda melihat kisi-kisi?plt.grid(True)
dan mendapatkan grafik kosong dengan garis kisi vertikal dan horizontal, jadi ya itu aneh mengapa saya tidak bisa mendapatkan ini untuk plot garis saya. Saya menjalankan versi terbaru iPython.plt.gca().xaxis.grid(True)
terbukti menjadi solusi bagi sayasumber
myaxes.grid(which='x')
tidak berfungsi untuk saya dengan matplotlib versi 1.4.2 ... tidak bisa membuatwhich
kata kunci berfungsi sama sekali. Namun,myaxes.xaxis.grid(True)
melakukan trik dan IMO secara konseptual lebih baik. Oh, dan jangan lupa tentangmyaxes.set_axisbelow(True)
metode yang berguna untuk meletakkan grid di belakang data.Menurut dokumentasi matplotlib , Tanda tangan metode
Axes
kelasgrid()
adalah sebagai berikut:Jadi untuk menampilkan garis grid untuk sumbu x dan sumbu y, kita dapat menggunakan kode berikut:
ax = plt.gca() ax.grid(which='major', axis='both', linestyle='--')
Metode ini memberi kita kontrol yang lebih baik atas apa yang harus ditampilkan untuk garis kisi.
sumber
mungkin ini bisa menyelesaikan masalah: matplotlib, tentukan ukuran grid pada sebuah plot
ax.grid(True, which='both')
Yang benar adalah bahwa grid berfungsi, tetapi hanya ada satu v-grid di 00:00 dan tidak ada grid yang lain. Saya menemui masalah yang sama yaitu hanya ada satu kisi pada 1 November di antara beberapa hari.
sumber
Jawaban singkat (baca di bawah untuk info lebih lanjut):
ax.grid(axis='both', which='both')
Apa yang Anda lakukan sudah benar dan seharusnya berhasil.
Namun, karena sumbu X dalam contoh Anda adalah sumbu DateTime , tanda centang utama (kemungkinan besar) hanya muncul di kedua ujung sumbu X. Tanda centang lain yang terlihat adalah tanda centang minor .
The
ax.grid()
metode, secara default, menarik garis grid di Major tick-tanda. Oleh karena itu, tidak ada yang muncul di plot Anda.Gunakan kode di bawah ini untuk menyorot tanda centang. Jurusan akan berwarna Biru sedangkan Anak di Bawah Umur berwarna Merah.
ax.tick_params(which='both', width=3) ax.tick_params(which='major', length=20, color='b') ax.tick_params(which='minor', length=10, color='r')
Sekarang untuk memaksa garis grid agar muncul juga pada tanda centang Minor, teruskan
which='minor'
ke metode:ax.grid(b=True, which='minor', axis='x', color='#000000', linestyle='--')
atau cukup gunakan
which='both'
untuk menggambar garis kisi Major dan Minor. Dan ini garis kisi yang lebih elegan:ax.grid(b=True, which='minor', axis='both', color='#888888', linestyle='--') ax.grid(b=True, which='major', axis='both', color='#000000', linestyle='-')
sumber
Hanya untuk garis horizontal
ax = plt.axes() ax.yaxis.grid() # horizontal lines
Ini berhasil
sumber