2016-07-15 3 views
3

Если я сюжет различные непересекающиеся линии с одним вызовом следующим образом ...питона несколько строк в одну группу

>>> import matplotlib.pyplot as plt 
>>> x = [random.randint(0,9) for i in range(10)] 
>>> y = [random.randint(0,9) for i in range(10)] 
>>> data = [] 
>>> for i in range(0,10,2): 
...  data.append((x[i], x[i+1])) 
...  data.append((y[i], y[i+1])) 
... 
>>> print(data) 
[(6, 4), (4, 3), (6, 5), (0, 4), (0, 0), (2, 2), (2, 0), (6, 5), (2, 5), (3, 6)] 
>>> plt.plot(*data) 
[<matplotlib.lines.Line2D object at 0x0000022A20046E48>, <matplotlib.lines.Line2D object at 0x0000022A2004D048>, <matplotlib.lines.Line2D object at 0x0000022A2004D9B0>, <matplotlib.lines.Line2D object at 0x0000022A20053208>, <matplotlib.lines.Line2D object at 0x0000022A20053A20>] 
>>> plt.show() 

enter image description here

Я не могу понять, как я получаю питона/Matplotlib, чтобы увидеть его как один участок, одного и того же цвета, ширины, ЭСТ и тот же элемент легенды ...

спасибо заранее

ответ

1

Если вы не возражаете их все они объединены в одну строку, чем вы должны просто использовать plt.plot(x,y). Однако, я думаю, вы хотели бы сохранить их в виде отдельных строк. Для этого вы можете указать аргументы стиля для вашего участка comamnd, а затем использовать код от Stop matplotlib repeating labels in legend, чтобы предотвратить несколько записей легенды.

import matplotlib.pyplot as plt 
import numpy as np 
from collections import OrderedDict 

x = [np.random.randint(0,9) for i in range(10)] 
y = [np.random.randint(0,9) for i in range(10)] 
data = [] 
for i in range(0,10,2): 
    data.append((x[i], x[i+1])) 
    data.append((y[i], y[i+1])) 

#Plot all with same style and label. 
plt.plot(*data,linestyle='-',color='blue',label='LABEL') 

#Single Legend Label 
handles, labels = plt.gca().get_legend_handles_labels() 
by_label = OrderedDict(zip(labels, handles)) 
plt.legend(by_label.values(), by_label.keys()) 

#Show Plot 
plt.show() 

Давать вам
enter image description here

0

Как насчет этого?

import numpy as np 
d = np.asarray(data) 
plt.plot(d[:,0],d[:,1]) 
plt.show() 
Смежные вопросы