2014-04-05 5 views
0

У меня есть матрица A размера 50x4 и другую матрицу B размера 4*2Matplotlib замышляет несколько ярлыков

import numpy as np 
import matplotlib.pyplot as plt 

plt.plot(np.dot(A, B), [0]*A.shape[0], "bo", label="Tennis") 

plt.legend() 
plt.show() 

enter image description here

Как сделать Matplotlib отображать имя метки только один раз?

+0

Я не могу воссоздать эту проблему. Вы уверены, что не вызываете 'plt.plot' еще раз на другой набор данных (или тот же набор данных) с тем же ярлыком? – ebarr

ответ

2

Поскольку у вас есть 2 столбца данных.

import numpy as np 
import matplotlib.pyplot as plt 

A=np.random.rand(50, 4) 
B=np.random.rand(4, 2) 
C=np.dot(A, B) 
D=[0]*A.shape[0] 
plt.plot(C, D, "bo", label="Tennis") 

plt.legend() 
plt.show() 

С теперь форму (50, 2) и D имеет форму (50,)

>>> C.shape 
(50, 2) 
>>> np.shape(D) 
(50,) 

документации по plt.plot говорит:

Если х и/или у есть 2-мерный, тогда будут построены соответствующие столбцы.

Я бы порекомендовал вам, чтобы исправить это за счет сокращения данных в одной колонке с использованием C.flatten() и изменяя размер D соответственно.

Смежные вопросы