Saya ingin tahu bagaimana cara membalik urutan warna colormap yang diberikan untuk menggunakannya dengan plot_surface.
python
matplotlib
Mermoz
sumber
sumber
Dalam matplotlib peta warna bukan daftar, tetapi berisi daftar warnanya sebagai
colormap.colors
. Dan modulmatplotlib.colors
menyediakan fungsiListedColormap()
untuk menghasilkan peta warna dari daftar. Jadi, Anda dapat membalikkan peta warna apa pun dengan melakukansumber
ListedColormap
s (yaitu diskrit, alih-alih diinterpolasi) yang memilikicolors
atribut. MembalikLinearSegmentedColormaps
sedikit lebih rumit. (Anda harus membalikkan setiap item dalam_segmentdata
dikt.)LinearSegmentedColormaps
, saya hanya melakukan ini untuk beberapa colourmaps. Inilah Notebook IPython tentang hal itu.Solusinya cukup mudah. Misalkan Anda ingin menggunakan skema colormap "musim gugur". Versi standar:
Untuk membalikkan spektrum warna colormap, gunakan fungsi get_cmap () dan tambahkan '_r' ke judul colormap seperti ini:
sumber
Karena
LinearSegmentedColormaps
didasarkan pada kamus merah, hijau dan biru, Anda perlu membalik setiap item:Lihat itu berfungsi:
EDIT
Saya tidak mendapatkan komentar dari user3445587. Ini berfungsi dengan baik pada rainbow colormap:
Tapi itu terutama berfungsi baik untuk colormaps yang dinyatakan kustom, karena tidak ada default
_r
untuk colormaps dinyatakan kustom. Contoh berikut diambil dari http://matplotlib.org/examples/pylab_examples/custom_cmap.html :sumber
Pada Matplotlib 2.0, ada
reversed()
metode untukListedColormap
danLinearSegmentedColorMap
objek, jadi Anda bisa melakukannyacmap_reversed = cmap.reversed()
Ini dokumentasinya.
sumber
Ada dua jenis LinearSegmentedColormaps. Dalam beberapa, _segmentdata diberikan secara eksplisit, misalnya, untuk jet:
Untuk pelangi, _segmentdata diberikan sebagai berikut:
Kita dapat menemukan fungsi-fungsi di sumber matplotlib, di mana mereka diberikan sebagai
Semua yang Anda inginkan sudah dilakukan di matplotlib, panggil saja cm.revcmap, yang membalikkan kedua jenis segmentdata, jadi
harus melakukan pekerjaan - Anda cukup membuat LinearSegmentData baru dari itu. Di revcmap, pembalikan fungsi berdasarkan SegmentData dilakukan dengan
sementara daftar lainnya dibalik seperti biasa
Jadi sebenarnya semua yang Anda inginkan, adalah
sumber
Tidak ada cara bawaan untuk membalikkan colormaps yang sewenang-wenang, tetapi satu solusi sederhana adalah dengan benar-benar tidak memodifikasi colorbar tetapi untuk membuat objek Normalisasi pembalik:
Anda kemudian dapat menggunakan ini dengan
plot_surface
dan fungsi merencanakan Matplotlib lainnya dengan melakukan misIni akan bekerja dengan colormap Matplotlib.
sumber