Impossible d'obtenir des lignes de quadrillage mineures dans la figure matplotlib

Ok, donc j'ai le code ci-dessous pour en temps réel graphique des données à partir d'un dispositif intégré reçu plus de série. Il n'est pas destiné à être un outil de production mais plutôt un interne fra outil, par conséquent, il n'est pas très convivial. Le problème est que, peu importe ce que je fais, je ne peux pas avoir des lignes de la grille d'apparaître, même si ici ils sont True, which=both. Je peux faire ce que je veux pour les grandes lignes de la grille, mais les mineurs ne s'affiche pas. Des idées? Voici le code:

import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
import serial
SERIAL_PORT_NUM=9
...a bunch of constants...
#windows starts serial port numbers at 1, python starts at 0
SERIAL_PORT_NUM = SERIAL_PORT_NUM - 1
"""
Open the serial port
"""
ser =serial.Serial(port=SERIAL_PORT_NUM,baudrate=115200,bytesize=8,parity='N',stopbits=1,timeout=None,xonxoff=0,rtscts=0)
# First set up the figure, the axis, and the plot element we want to animate
raw_adc_fig = plt.figure()
raw_adc_ax = plt.axes(xlim=(0, 200), ylim=(0, 2047))
raw_adc_ax.grid(True, which='both')
raw_adc_fig.suptitle("Raw ADC data")
plt.ylabel("ADC values (hex)")
plt.xlabel("time (sec)")
raw_adc_line, = raw_adc_ax.plot([], [], lw=2)
def read_serial(serial_port):
tmp = ''
same_line = True
while same_line:
tmp += serial_port.read(1)
if tmp != '':
if tmp[-1] == '*':
same_line = False
tmp = tmp.rstrip()
tmp = tmp.lstrip()
return tmp
def process_serial(input_data):
output_data = 0
intermediate_data = input_data[A_TYPE_START_POS:A_TYPE_STOP_POS + 1]
if( intermediate_data != ''):
output_data =  int(intermediate_data , 16 )
else:
print "bad data"
output_data = -100
return output_data
def get_sound_value(serial_port):
cur_line = ''
get_next_line = True
# read in the next line until a sound packet of type A is found
while( get_next_line ):
cur_line = read_serial(serial_port)
if( (cur_line != '') and (cur_line[0:3] == ROUTER_SOUND_DATA) and (len(cur_line) == D_TYPE_STOP_POS + 2) ):
get_next_line = False
sound_value = process_serial(cur_line)
return sound_value
# initialization function: plot the background of each frame
def raw_adc_init():
raw_adc_line.set_data([], [])
return raw_adc_line,
# animation function.  This is called sequentially
def raw_adc_animate(i):
sound_data_list.append( get_sound_value(ser) )
y = sound_data_list
if( len(y) == 190 ):
del y[0]
x = np.linspace(0, len(y), len(y))
raw_adc_line.set_data(x, y)
return raw_adc_line,
# call the animator.  blit=True means only re-draw the parts that have changed.
raw_adc_anim = animation.FuncAnimation(raw_adc_fig, raw_adc_animate, init_func=raw_adc_init, frames=200, interval=1000, blit=True)

Edit: correction d'un bug lors de l'ouverture du port série. Changé timeout=0 à timeout=None.

source d'informationauteur therealjumbo | 2013-11-12