Estou trabalhando com dados que têm 3 parâmetros de plotagem: x, y, c. Como você cria um valor de cor personalizado para um gráfico de dispersão?
Estendendo este exemplo que estou tentando fazer:
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()
mas o resultado é TypeError: You must first set_array for mappable
python
colors
matplotlib
Adam Greenhall
fonte
fonte
'AxesSubplot' object has no attribute 'colorbar'
. Eu fizax.colorbar()
... o que estou fazendo de errado?Esta é a maneira OOP de adicionar uma barra de cores:
fonte
plt
para traçar a barra de cores não é uma forma recomendada, eu acho. O seu caminho é recomendado.Se você quer espalhar por duas variáveis e colorir pela terceira, Altair pode ser uma ótima escolha.
Criação do conjunto de dados
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'])
Trama de Altair
from altair import * Chart(df).mark_circle().encode(x='A',y='B', color='C').configure_cell(width=200, height=150)
Enredo
fonte