Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mencipta Bar Warna Diskret Tersuai untuk Matplotlib Scatterplot?

Bagaimana untuk Mencipta Bar Warna Diskret Tersuai untuk Matplotlib Scatterplot?

DDD
DDDasal
2024-10-24 18:36:29968semak imbas

How to Create a Custom Discrete Colorbar for a Matplotlib Scatterplot?

Bar Warna Diskret Tersuai untuk Matplotlib Scatterplot

Dalam Matplotlib, mencipta bar warna diskret untuk scatterplot membolehkan anda mewakili titik data dengan warna unik berdasarkan pada nilai tag integer mereka. Untuk mencapai matlamat ini, peta warna diskret tersuai dan BoundaryNorm boleh digunakan.

Mari bina plot serakan dengan data x dan y rawak, dan tetapkan tag integer antara 0 hingga 20:

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

x = np.random.rand(20)
y = np.random.rand(20)
tag = np.random.randint(0, 20, 20)</code>

Pada mulanya, menggunakan tetapan lalai, bar warna memaparkan julat warna yang berterusan:

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

Untuk mencipta bar warna diskret, kami akan menggunakan BoundaryNorm untuk mentakrifkan sempadan peta warna. Kami juga ingin memastikan bahawa nilai teg 0 diwakili oleh warna kelabu:

<code class="python">bounds = np.linspace(0, 20, 21)
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)

cmaplist = [cmap(i) for i in range(cmap.N)]
cmaplist[0] = (.5, .5, .5, 1.0)

cmap = mpl.colors.LinearSegmentedColormap.from_list(
    'Custom cmap', cmaplist, cmap.N)</code>

Petak serakan yang dikemas kini dengan bar warna diskret kelihatan seperti ini:

<code class="python">scat = ax.scatter(x, y, c=tag, s=np.random.randint(100, 500, 20),
                  cmap=cmap, norm=norm)

# Add the discrete colorbar
ax2 = fig.add_axes([0.95, 0.1, 0.03, 0.8])
cb = plt.colorbar.ColorbarBase(ax2, cmap=cmap, norm=norm,
    spacing='proportional', ticks=bounds, boundaries=bounds, format='%1i')</code>

Pendekatan ini menyediakan bar warna diskret yang ditakrifkan dengan baik untuk plot serakan anda, di mana setiap nilai teg diwakili oleh warna unik, termasuk warna kelabu untuk nilai teg 0.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Bar Warna Diskret Tersuai untuk Matplotlib Scatterplot?. 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