<p>您可以使用<a href="http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.hlines" rel="noreferrer">plt.hlines</a>:</p>
<pre><code>import matplotlib.pyplot as plt
import random
import numpy as np
import string
def generate_data(N = 20):
data = [random.randrange(3) for x in range(N)]
A = [i for i, x in enumerate(data) if x == 0]
B = [i for i, x in enumerate(data) if x == 1]
C = [i for i, x in enumerate(data) if x == 2]
return A,B,C
def to_xy(*events):
x, y = [], []
for i,event in enumerate(events):
y.extend([i]*len(event))
x.extend(event)
x, y = np.array(x), np.array(y)
return x,y
def event_string(x,y):
labels = np.array(list(string.uppercase))
seq = labels[y[np.argsort(x)]]
return seq.tostring()
def plot_events(x,y):
labels = np.array(list(string.uppercase))
plt.hlines(y, x, x+1, lw = 2, color = 'red')
plt.ylim(max(y)+0.5, min(y)-0.5)
plt.yticks(range(y.max()+1), labels)
plt.show()
A,B,C = generate_data(20)
x,y = to_xy(A,B,C)
print(event_string(x,y))
plot_events(x,y)
</code></pre>
<p>收益率</p>
<pre><code>BBACBCACCABACCBCABCC
</code></pre>
<p><img src="https://i.stack.imgur.com/D1Ryj.png" alt="enter image description here"/></p>