No se pueden obtener líneas de cuadrícula secundarias para aparecer en la figura matplotlib

Ok, tengo el siguiente código para graficar en tiempo real algunos datos de un dispositivo integrado recibido en serie. No es una herramienta de producción, sino una herramienta de ingeniería interna, por lo que no es muy fácil de usar. El problema es que no importa lo que haga, no puedo hacer que aparezcan líneas de cuadrícula menores, aunque aquí están configuradas paraTrue, which=both. Puedo hacer lo que quiera con las líneas de cuadrícula principales, pero los menores no aparecerán. ¿Algunas ideas? Aquí está el código:

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)

Editar: corrigió un error al abrir el puerto serie. Cambiadotimeout=0 atimeout=None.

Respuestas a la pregunta(2)

Su respuesta a la pregunta