Chcę utworzyć wykres rozrzutu (za pomocą matplotlib), w którym punkty są cieniowane zgodnie z trzecią zmienną. Jestem z tym bardzo blisko:
plt.scatter(w, M, c=p, marker='s')
gdzie wi M są punktami danych, a p jest zmienną, w odniesieniu do której chcę zacienić.
Jednak chcę to zrobić w odcieniach szarości, a nie w kolorze. Czy ktoś może pomóc?
python
matplotlib
plot
scatter
Thomas Collett
źródło
źródło
mpl.cm
jest również dostępny bezpośrednio jakoplt.cm
.plt.contour()
lubplt.contourf()
- ale to inne pytanieW matplotlib szare kolory można podać jako ciąg o wartości liczbowej z zakresu od 0 do 1.
Na przykład
c = '0.1'
Następnie możesz przekonwertować trzecią zmienną na wartość z tego zakresu i użyć jej do pokolorowania punktów.
W poniższym przykładzie użyłem pozycji y punktu jako wartości określającej kolor:
źródło
c
argument podasz tablicę w kształcie (n, 4) , z wartościami alfa w czwartej kolumnie. Jeśli trzecia zmienna to Z,shape=(n,1)
tocolors = numpy.hstack((numpy.zeros_like(z), numpy.zeros_like(z), numpy.ones_like(z), z/z.max()))
daje bardzo fajny efekt (oczywiście można ją podkręcić).plt.colorbar()
to zrobiCzasami może zajść potrzeba precyzyjnego wykreślenia koloru na podstawie przypadku wartości x . Na przykład możesz mieć ramkę danych z 3 typami zmiennych i niektórymi punktami danych. I chcesz śledzić,
W takim przypadku może być konieczne napisanie do funkcji short, aby zmapować wartości x do odpowiednich nazw kolorów jako listę, a następnie przekazać tę listę do
plt.scatter
polecenia.źródło