Вывод графика потерь пакетов из NS2 .tr файла
Код в файле test.py:
import main as tr
packetloss = tr.PacketLoss('iz.tr')
packetloss.plot()
А это часть маин:
def plot(self,*argv):
#test sampling
try:
var=float(self.time_sample[3])
except:
var=-1
if (var!=-1):
try:
_arg=list(argv)
args=_arg[0]
except:
args='s-'
plt.plot(self.time_sample,self.pdr_sample,args,label=self.legend)
else:
#plot array
try:
_arg=list(argv)
args=_arg[0]
plt.plot(self.time_array,self.pdr_array,args,label=self.legend)
except :
plt.plot(self.time_array,self.pdr_array,label=self.legend)
plt.title('Packet Delivery Ratio [PDR]')
plt.xlabel('Zaman [s]')
plt.ylabel('PDR')
plt.grid(True)
plt.legend()
plt.draw()
plt.pause(1)
#plt.close()
В ответ получается это:
Просто подскажите что я делаю не так. За ранее спасибо.
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
функция plt.plot(x, y, ...) чертит точки, заданные x и y векторами / списками координат на плоскости.
Таким образом параметры x и y должны представлять из себя списко-подобные объекты одинаковой длины.
Например:
from math import sin
def f(x):
return sin(x)
x = [ii/10 for ii in range(-100, 100)]
y = [f(ii) for ii in x]
plt.plot(x, y)
plt.grid()
Ошибка сообщает вам о том, что plt.plot() не может начертить точки, если длины списков X координат и Y координат не совпадают.
Пример:
plt.plot([1,2,3], [1,2])
ValueError: x and y must have same first dimension, but have shapes (3,) and (2,)
И на самом деле мы не можем начертить точку на двухмерной плоскости, если у этой точки присутствует только одна координата - x.

