Tworzę interaktywne wątki i chcę dodać legendę paska kolorów. Nie chcę, aby pasek kolorów był we własnych osiach, dlatego chcę go dodać do istniejących osi. Mam trudności z tym, ponieważ większość przykładowego kodu, który znalazłem tworzy nowe osie dla paska kolorów.Dodaj pasek kolorów do istniejącej osi
Próbowałem następujący kod przy użyciu matplotlib.colorbar.ColorbarBase
, który dodaje pasek kolorów do istniejących osi, ale daje mi dziwne wyniki i nie mogę dowiedzieć się, jak określić atrybuty paska kolorów (na przykład, gdzie na osiach jest on umieszczony i jaki rozmiar jest)
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.cm import coolwarm
import numpy as np
x = np.random.uniform(1, 10, 10)
y = np.random.uniform(1, 10, 10)
v = np.random.uniform(1, 10, 10)
fig, ax = plt.subplots()
s = ax.scatter(x, y, c=v, cmap=coolwarm)
matplotlib.colorbar.ColorbarBase(ax=ax, cmap=coolwarm, values=sorted(v),
orientation="horizontal")
Korzystanie fig.colorbar
zamiast matplotlib.colorbar.ColorbarBase
wciąż nie daje mi zupełnie co chcę, a ja nadal nie wiem jak ustawić atrybuty colorbar.
fig.colorbar(s, ax=ax, cax=ax)
Powiedzmy, że chcesz mieć colorbar w lewym górnym rogu, rozciąganie około połowy całej górnej części działki. Jak mam to zrobić?
Czy lepiej napisać niestandardową funkcję do tego, może za pomocą LineCollection
?
nie mam odpowiedź na to pytanie. Dlaczego jednak chcesz, aby pasek koloru był częścią istniejącej osi, a nie nową osią? – tnknepp
@tnknepp Tworzę interaktywne wątki z powiększaniem/przesuwaniem, włączaniem i wyłączaniem wykresów itp. Po prostu łatwiej będzie mi nie tworzyć nowych osi dla paska kolorów –
dlaczego nie możesz po prostu użyć ' fig.colorbar (ax = ax) '? – tom