Pertanyaan matplotlib colorbar untuk pencar


Saya bekerja dengan data yang memiliki data memiliki 3 parameter merencanakan: x, y, c. Bagaimana Anda membuat nilai warna kustom untuk sebar plot?

Memperluas ini contoh Saya coba lakukan:

import matplotlib
import matplotlib.pyplot as plt
cm = matplotlib.cm.get_cmap('RdYlBu')
colors=[cm(1.*i/20) for i in range(20)]
xy = range(20)
plt.subplot(111)
colorlist=[colors[x/2] for x in xy] #actually some other non-linear relationship
plt.scatter(xy, xy, c=colorlist, s=35, vmin=0, vmax=20)
plt.colorbar()
plt.show()

tetapi hasilnya TypeError: You must first set_array for mappable


48
2018-05-19 19:28


asal


Jawaban:


Dari dokumen matplotlib pada pencar 1:

cmap hanya digunakan jika c adalah array float

Jadi daftar warna perlu daftar pelampung daripada daftar tupel seperti yang Anda miliki sekarang. plt.colorbar () menginginkan objek mappable, seperti CircleCollection yang plt.scatter () kembali. vmin dan vmax dapat mengontrol batas colorbar Anda. Hal-hal di luar vmin / vmax mendapatkan warna dari titik akhir.

Bagaimana ini bekerja untuk Anda?

import matplotlib.pyplot as plt
cm = plt.cm.get_cmap('RdYlBu')
xy = range(20)
z = xy
sc = plt.scatter(xy, xy, c=z, vmin=0, vmax=20, s=35, cmap=cm)
plt.colorbar(sc)
plt.show()

Image Example


128
2018-05-19 22:22



Jika Anda ingin menyebarkan oleh dua variabel dan warna dengan ketiga, Altair bisa menjadi pilihan yang bagus.

Membuat dataset

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

df = pd.DataFrame(40*np.random.randn(10, 3), columns=['A', 'B','C'])

Plot Altair

from altair import *
Chart(df).mark_circle().encode(x='A',y='B', color='C').configure_cell(width=200, height=150)

Merencanakan

enter image description here


1
2017-07-06 04:08