Saya memiliki kerangka data yang dihasilkan dari paket Pandas Python. Bagaimana saya bisa menghasilkan peta panas menggunakan DataFrame dari paket pandas.
import numpy as np
from pandas import *
Index= ['aaa','bbb','ccc','ddd','eee']
Cols = ['A', 'B', 'C','D']
df = DataFrame(abs(np.random.randn(5, 4)), index= Index, columns=Cols)
>>> df
A B C D
aaa 2.431645 1.248688 0.267648 0.613826
bbb 0.809296 1.671020 1.564420 0.347662
ccc 1.501939 1.126518 0.702019 1.596048
ddd 0.137160 0.147368 1.504663 0.202822
eee 0.134540 3.708104 0.309097 1.641090
>>>
Jawaban:
Anda ingin
matplotlib.pcolor
:Ini memberi:
sumber
pcolor
vsimshow
.pcolormesh
, yang dioptimalkan untuk jenis grafik ini.Bagi orang yang melihat ini hari ini, saya akan merekomendasikan Seaborn
heatmap()
seperti yang didokumentasikan di sini .Contoh di atas akan dilakukan sebagai berikut:
Di mana
%matplotlib
fungsi ajaib IPython untuk mereka yang tidak terbiasa.sumber
import matplotlib.pyplot as plt
?import matplotlib.pyplot as plt
alih-alih%matplotlib inline
dan selesaikan denganplt.show()
untuk benar-benar melihat plotnya.Jika Anda tidak memerlukan plot per kata, dan Anda hanya tertarik untuk menambahkan warna untuk mewakili nilai dalam format tabel, Anda dapat menggunakan
style.background_gradient()
metode bingkai data pandas. Metode ini mewarnai tabel HTML yang ditampilkan saat melihat bingkai data panda di misalnya, Notebook JupyterLab dan hasilnya mirip dengan menggunakan "pemformatan bersyarat" di perangkat lunak spreadsheet:Untuk penggunaan terperinci, silakan lihat jawaban yang lebih terperinci yang saya berikan pada topik yang sama sebelumnya dan bagian gaya dari dokumentasi panda .
sumber
pd.DataFrame([[1, 1], [0, 3]]).style.background_gradient(cmap='summer')
menghasilkan tabel dengan dua tabel, masing-masing dengan warna berbeda.axis=None
(sejak pandas 0.24.0).axis=None
capai itu dan, menurut saya, itu harus menjadi bagian dari jawaban Anda (khususnya karena tampaknya tidak didokumentasikan 0 )axis=None
bagian dari jawaban rinci yang saya tautkan di atas, bersama dengan beberapa opsi lain karena saya setuju dengan Anda bahwa beberapa opsi ini memungkinkan perilaku yang secara umum diinginkan. Saya juga melihat kurangnya dokumentasi kemarin dan membuka PR .sns.heatmap
Api yang berguna ada di sini . Periksa parameternya, ada sejumlah bagus. Contoh:sumber
Jika Anda menginginkan peta panas interaktif dari Pandas DataFrame dan Anda menjalankan buku catatan Jupyter, Anda dapat mencoba Widget Clustergrammer-Widget interaktif, lihat buku catatan interaktif di NBViewer di sini , dokumentasi di sini
Dan untuk kumpulan data yang lebih besar Anda dapat mencoba widget Clustergrammer2 WebGL dalam pengembangan (contoh notebook di sini )
sumber
Harap dicatat bahwa penulis
seaborn
hanya inginseaborn.heatmap
bekerja dengan kerangka data kategorikal. Ini tidak umum.Jika indeks dan kolom Anda adalah nilai numerik dan / atau tanggal waktu, kode ini akan membantu Anda dengan baik.
Fungsi pemetaan panas Matplotlib
pcolormesh
membutuhkan bins, bukan indeks , jadi ada beberapa kode keren untuk membuat bins dari indeks dataframe Anda (bahkan jika indeks Anda tidak berjarak sama!).Sisanya sederhana
np.meshgrid
danplt.pcolormesh
.Sebut saja menggunakan
heatmap(df)
, dan lihat menggunakanplt.show()
.sumber