Stworzyłem wykres wykresu rozproszenia 4D, aby przedstawić różne temperatury w określonym obszarze. Kiedy utworzę legendę, legenda pokazuje poprawny symbol i kolor, ale dodaje do niego linię. Kod używam jest:Legenda plotowania działek Matplotlib
colors=['b', 'c', 'y', 'm', 'r']
lo = plt.Line2D(range(10), range(10), marker='x', color=colors[0])
ll = plt.Line2D(range(10), range(10), marker='o', color=colors[0])
l = plt.Line2D(range(10), range(10), marker='o',color=colors[1])
a = plt.Line2D(range(10), range(10), marker='o',color=colors[2])
h = plt.Line2D(range(10), range(10), marker='o',color=colors[3])
hh = plt.Line2D(range(10), range(10), marker='o',color=colors[4])
ho = plt.Line2D(range(10), range(10), marker='x', color=colors[4])
plt.legend((lo,ll,l,a, h, hh, ho),('Low Outlier', 'LoLo','Lo', 'Average', 'Hi', 'HiHi', 'High Outlier'),numpoints=1, loc='lower left', ncol=3, fontsize=8)
Próbowałem zmieniając Line2D
do Scatter
i scatter
. Scatter
zwrócił błąd i scatter
zmienił wykres i zwrócił błąd.
Z scatter
, zmieniłem range(10)
na listy zawierające punkty danych. Każda lista zawiera zmienną x, y lub z.
lo = plt.scatter(xLOutlier, yLOutlier, zLOutlier, marker='x', color=colors[0])
ll = plt.scatter(xLoLo, yLoLo, zLoLo, marker='o', color=colors[0])
l = plt.scatter(xLo, yLo, zLo, marker='o',color=colors[1])
a = plt.scatter(xAverage, yAverage, zAverage, marker='o',color=colors[2])
h = plt.scatter(xHi, yHi, zHi, marker='o',color=colors[3])
hh = plt.scatter(xHiHi, yHiHi, zHiHi, marker='o',color=colors[4])
ho = plt.scatter(xHOutlier, yHOutlier, zHOutlier, marker='x', color=colors[4])
plt.legend((lo,ll,l,a, h, hh, ho),('Low Outlier', 'LoLo','Lo', 'Average', 'Hi', 'HiHi', 'High Outlier'),scatterpoints=1, loc='lower left', ncol=3, fontsize=8)
Po uruchomieniu legenda już nie istnieje, jest to małe białe pudełko w rogu bez niczego w nim.
Każda rada?
wierzę, dużo lepszym rozwiązaniem Podane [tutaj] (http://stackoverflow.com/questions/21654635/scatter-plots-in-pandas-pyplot-how-to-plot -do-kategorii). – dmvianna