2015-05-20 2 views
3

Я пытаюсь сделать что-то, что, по моему мнению, должно быть довольно прямым, но я не могу заставить его работать.Python plot plot 2 мерная матрица

Я пытаюсь построить 16 значений, измеренных во времени, чтобы увидеть, как они меняются. Я пытаюсь использовать график рассеяния, чтобы сделать это с помощью: ось x является показателем измерения ось y является индексом байта и цветом, обозначающим значение байта.

У меня есть данные, хранящиеся в массиве numpy, где данные [2] [14] дадут мне значение 14-го байта во втором измерении.

Каждый раз, когда я пытаюсь построить это, я получаю либо:

ValueError: x and y must be the same size 
IndexError: index 10 is out of bounds for axis 0 with size 10 

Вот тестовый образец, я использую:

import numpy 
import numpy.random as nprnd 
import matplotlib.pyplot as plt 

#generate random measurements 
# 10 measurements of 16 byte values 
x = numpy.arange(10) 
y = numpy.arange(16) 
test_data = nprnd.randint(low=0,high=65535, size=(10, 16)) 

#scatter plot the measurements with 
# x - measurement index (0-9 in this case) 
# y - byte value index (0-15 in this case) 
# c = test_data[x,y] 

plt.scatter(x,y,c=test_data[x][y]) 
plt.show() 

Я уверен, что это что-то глупо Я делаю неправильно, но я не могу понять, что.

Спасибо за помощь.

ответ

3

Попробуйте использовать meshgrid, чтобы определить ваши местоположения точек, и не забудьте индекс в массиве NumPy правильно (с [x,y], а не [x][y]):

x, y = numpy.meshgrid(x,y) 
plt.scatter(x,y,c=test_data[x,y]) 
plt.show() 

enter image description here