Rumah >pembangunan bahagian belakang >Tutorial Python >## Bagaimana untuk Mencipta Bar Warna Diskret untuk Scatterplots dalam Matplotlib?
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.
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.
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.
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!