Rumah >pembangunan bahagian belakang >Tutorial Python >## Bagaimana untuk Mencipta Bar Warna Diskret untuk Scatterplots dalam Matplotlib?

## Bagaimana untuk Mencipta Bar Warna Diskret untuk Scatterplots dalam Matplotlib?

Patricia Arquette
Patricia Arquetteasal
2024-10-25 09:13:28985semak imbas

## How to Create a Discrete Colorbar for Scatterplots in Matplotlib?

Matplotlib Discrete Colorbar

Pengenalan

Matplotlib ialah perpustakaan Python yang popular untuk visualisasi data. Scatterplots ialah jenis plot biasa yang digunakan untuk memaparkan taburan bivariat bagi titik data. Dalam sesetengah kes, adalah wajar untuk mewakili setiap titik data dengan warna yang unik. Artikel ini akan menunjukkan cara mencipta bar warna diskret untuk plot serakan dalam Matplotlib, dengan berkesan memetakan nilai tag integer kepada warna tertentu.

Menggunakan BoundaryNorm

Untuk mencipta bar warna diskret, BoundaryNorm digunakan sebagai penormal untuk plot taburan. BoundaryNorm membahagikan julat data kepada satu set tong sampah, dengan setiap tong sepadan dengan warna tertentu. Kod Python berikut menunjukkan cara mencipta bar warna diskret menggunakan BoundaryNorm:

<code class="python">import numpy as np
import matplotlib as mpl
import matplotlib.pylab as plt

x = np.random.rand(20)  # Define the data
y = np.random.rand(20)  # Define the data
tag = np.random.randint(0, 20, 20)

cmap = plt.cm.jet  # Define the colormap
bounds = np.linspace(0, 20, 21)  # Define the bins for the colorbar
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)  # Create the BoundaryNorm

plt.scatter(x, y, c=tag, cmap=cmap, norm=norm)  # Create the scatterplot with the discrete colorbar

plt.colorbar()  # Display the colorbar</code>

Kod ini akan mencipta plot serakan dengan 20 titik data yang dijana secara rawak, setiap satu memberikan nilai tag integer rawak dari 0 hingga 19. colorbar akan memaparkan 20 warna yang berbeza, dengan setiap warna sepadan dengan nilai teg tertentu.

Menyesuaikan Bar Warna

Dalam kes tertentu, mungkin wajar untuk menyesuaikan warna dalam bar warna. Ini boleh dicapai dengan mencipta peta warna tersuai menggunakan kelas LinearSegmentedColormap. Kod Python berikut menunjukkan cara mencipta peta warna tersuai dengan warna kelabu untuk nilai teg 0 dan pelbagai warna untuk nilai teg 1 hingga 20:

<code class="python">cmaplist = [cmap(i) for i in range(cmap.N)]  # Extract all colors from the original colormap
cmaplist[0] = (.5, .5, .5, 1.0)  # Override the first color with gray

cmap = mpl.colors.LinearSegmentedColormap.from_list('Custom cmap', cmaplist, cmap.N)  # Create the custom colormap</code>

Dengan peta warna tersuai ditakrifkan, ia boleh digunakan dalam scatterplot seperti berikut:

<code class="python">plt.scatter(x, y, c=tag, cmap=cmap, norm=norm)</code>

Kod ini akan mencipta scatterplot dengan titik data yang sama seperti sebelumnya, tetapi bar warna kini akan memaparkan warna tersuai dengan kelabu mewakili nilai teg 0.

Mengoptimumkan untuk Kejelasan Visual

Semasa menggunakan bar warna diskret dengan sejumlah besar warna boleh memberikan pelbagai pilihan, adalah penting untuk mempertimbangkan kejelasan visual. Sebilangan besar warna berbeza boleh menyukarkan untuk membezakan secara visual antara nilai tertentu. Dalam sesetengah kes, ia mungkin berfaedah untuk menggunakan bilangan warna yang dikurangkan atau untuk mengumpulkan nilai teg yang serupa ke dalam julat warna. Akhirnya, pilihan warna dan julat warna yang optimum akan bergantung pada data khusus dan tujuan penggunaan plot.

Atas ialah kandungan terperinci ## Bagaimana untuk Mencipta Bar Warna Diskret untuk Scatterplots dalam Matplotlib?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn