2017-08-15 1 views
0

Ich spiele um in Python erstellen, und ich wollte einen Schritt Graph-Funktion, die mit jeder Liste in einer zweidimensionalen Liste nimmt von 1 und 0 aus erstellen und Diagramme, die jeweils Liste in einer separaten Zeile, die ähnlich wie diese: clocking graph enter image description hereWollen Räume zwischen Diagrammlinien mit Sprungfunktion matplotlib

wenn ich meinen Code ausführen sieht es wie folgt aus: Code output enter image description here

es kann ein wenig schwierig sein, besonders zu lesen, bei der Verwendung eine viel größere Liste. Ich möchte Leerzeichen zwischen den Diagrammlinien erstellen, um sie lesbarer zu machen. Jede Hilfe wäre willkommen.

# supress warning message 
import warnings; warnings.simplefilter("ignore") 
# extension libraries 
import matplotlib.pyplot as plt 
import numpy as np 


bits = [[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1], [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], \ 
     [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], \ 
     [0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1]] 

for i in range(len(bits)): 
    data = np.repeat(bits[i], 2) 
    t = 0.5 * np.arange(len(data)) 

    plt.hold(True) 
    plt.step(t, data + i, linewidth=1.5, where='post', color='g') 

    plt.ylim([-1, 10]) 

    # Labels the graphs with binary sequence 
    for tbit, bit in enumerate(bits[i]): 
     plt.text(tbit + 0.2, i, str(bit), fontsize=12, color='g') 

    # removes the built in graph axes and prints line every interation 
    plt.gca().axis('off') 


plt.show() 

Antwort

0

Sie müssen nur den vertikalen Abstand von jeder Ihrer Zeilen erhöhen, indem Sie den y-Wert erhöhen. Um es einfach zu machen, multipliziere ich einfach i mit 2, um Ihre Zeilen etwas weiter auseinander zu halten. Wenn Sie mehr Kontrolle über die Position der Linien haben möchten, könnten Sie eine Liste von y-Werten haben und stattdessen iterieren.

bits = [[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1], [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], \ 
     [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], \ 
     [0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1]] 

for i in range(len(bits)): 
    data = np.repeat(bits[i], 2) 
    t = 0.5 * np.arange(len(data)) 

    plt.hold(True) 
    plt.step(t, data + i*2, linewidth=1.5, where='post', color='g') 
    #     ^^^^^^ 

    plt.ylim([-1, 10]) 

    # Labels the graphs with binary sequence 
    for tbit, bit in enumerate(bits[i]): 
     plt.text(tbit + 0.2, 0.25+i*2, str(bit), fontsize=12, color='g') 
    #      ^^^^^^^^^ 

    # removes the built in graph axes and prints line every interation 
    plt.gca().axis('off') 

plt.show() 

enter image description here

Verwandte Themen