Kleinere Gitterlinien können nicht in der Matplotlib-Figur angezeigt werden

Ok, ich habe den folgenden Code, um einige Daten von einem eingebetteten Gerät in Echtzeit grafisch darzustellen, die seriell empfangen wurden. Es ist nicht als Produktionswerkzeug gedacht, sondern als internes Werkzeug. Daher ist es nicht besonders benutzerfreundlich. Das Problem ist, dass egal was ich tue, keine Nebengitterlinien angezeigt werden, obwohl sie hier eingestellt sindTrue, which=both. Ich kann mit den Hauptgitterlinien alles tun, was ich will, aber die Minderjährigen werden nicht erscheinen. Irgendwelche Ideen? Hier ist der 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)

Bearbeiten: Fehler beim Öffnen der seriellen Schnittstelle behoben. Geänderttimeout=0 zutimeout=None.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage