Я получаю 288 значений данных каждый раз. Ось x должна быть от 350 до 840 с размером ячейки 1,7. Цифрами, указанными ниже, являются значения y.Как сделать последовательные данные гистограммой в python?
[175, 173, 177, 175, 175, 175, 175, 174, 174, 175, 175, 174, 175, 175, 175, 175, 174, 175, 175, 175, 175, 175, 175, 175, 174, 175, 174, 174, 175, 175, 174, 174, 174, 175, 175, 175, 175, 174, 175, 175, 175, 174, 175, 175, 175, 175, 175, 175, 175, 174, 174, 175, 175, 175, 174, 174, 175, 175, 174, 175, 174, 175, 174, 175, 174, 174, 175, 175, 175, 175, 175, 175, 175, 175, 174, 175, 174, 174, 174, 174, 175, 175, 176, 174, 175, 174, 177, 175, 174, 175, 176, 175, 175, 175, 175, 175, 175, 175, 175, 173, 175, 176, 176, 176, 177, 175, 175, 175, 174, 175, 175, 174, 174, 176, 179, 175, 175, 175, 175, 175, 175, 175, 175, 174, 175, 174, 175, 175, 175, 175, 175, 175, 175, 174, 173, 175, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 175, 176, 177, 175, 174, 174, 175, 175, 175, 175, 172, 176, 176, 178, 176, 175, 175, 175, 174, 174, 174, 177, 176, 176, 176, 176, 176, 175, 176, 176, 174, 175, 175, 174, 174, 174, 175, 175, 175, 175, 175, 174, 174, 174, 175, 175, 175, 175, 175, 175, 175, 175, 174, 174, 175, 175, 175, 174, 174, 174, 175, 175, 174, 174, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 174, 175, 174, 175, 175, 175, 175, 176, 176, 176, 175, 175, 176, 177, 176, 176, 176, 176, 177, 176, 175, 176, 176, 175, 175, 175, 175, 173]
Код Python, с которым я столкнулся, приведен ниже. Некоторые из них прокомментированы, поэтому вы можете увидеть немного мыслительного процесса. Большая часть его была удалена, а затем повторно организована снова и снова.
import serial
import matplotlib.pyplot as plt
import matplotlib.animation as animation from matplotlib
import style import time import re
raw_buffer = ''
ydata = []
ydata_changed = False
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=None)
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
while True:
waiting = ser.inWaiting()
if waiting > 0:
raw_buffer = raw_buffer + \
ser.read(waiting).replace('\x00', '').replace('\n', ' ').replace(',', ' ')
re.sub("[^[0-9]", "", raw_buffer)
raw_buffer= [ int(x) for x in raw_buffer ]
print "" + str(raw_buffer)
#ser.read(waiting).replace('\x00', '').replace('\n', '')
# idx = raw_buffer.rfind(',')
#raw_data = raw_buffer[0:idx]
#raw_buffer = raw_buffer[idx + 1:]
#raw_list = map(lambda x: int(x), \
#filter(lambda x: x != '', raw_data.split(',')))
#if len(raw_list) > 0:
#ydata.extend(raw_list)
#ydata_changed = True
#if ydata_changed:
#ydata_changed = False
#plt(ax, raw_data)
#print "" + str(raw_buffer)
##break
def animate(i):
graph_data = raw_list.read()
lines = graph_data.split('\n')
xs = []
ys = []
for line in lines:
if len(line) > 1:
x = (0,288,1)
y = lines
xs.append(x)
ys.append(y)
ax1.clear()
ax1.plot(xs, ys)
ani = animation.FuncAnimation(fig, animate, interval=1000) time.sleep(1)
plt.show()
У меня есть код "Processing", который работает! Это ничего необычного. Если кто-то хочет помочь и хочет увидеть этот код, я могу отредактировать свой пост и выставить его.
В Stackoverflow нет похожего вопроса, который, похоже, соответствует именно тому, что я хочу делать, просто бит и куски. В принципе, я хочу, чтобы гистограмма формировалась с каждым новым набором данных (примерно каждую секунду). Если это нехороший путь, я пытаюсь попробовать другие пути. Спасибо!
Я не уверен, чтобы понять очень хорошо, но если вы хотите обновить т. е. ваш график для каждого ввода нового значения? вы можете использовать 'drawow' ... или посмотреть это сообщение: http://stackoverflow.com/questions/31506591/how-to-update-pyplot-histogram или – Dadep
Я изменил свой код, чтобы соответствовать вашим требованиям, и у меня были проблемы. Итак, я решил просто попробовать свой код и даже проблемы с ним. Я исправил пару, но пример ошибки: «операнды не могут быть переданы вместе с фигурами (0,) (10,)« Я также попытался спрятать и до сих пор не получаю ничего близкого к фигуре с графиком выскользнуть. :( – keakins13
Можете ли вы подтвердить, что ваш код работает, и что проблема заключается в обновлении графической гистограммы при поступлении новых данных? – Dadep