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)
from matplotlib import pyplot as plt
A = [23,45,56,78,32,11]
B = [44,56,78,98]
C = [23,46,67,79]
x = []
y = []
for idx, lst in enumerate((A, B, C)):
for time in lst:
x.append(time)
y.append(idx)
plt.ylim((-3,5))
plt.yticks([0, 1, 2], ['A', 'B', 'C'])
plt.scatter(x,y, color='r', s=70)
plt.show()
您可以使用plt.hlines:
收益率
作为前面答案的扩展,您可以使用
plt.hbar
:或者,你可以试试这样的事情:
如果希望所有插槽位于同一行,只需进行一些更改,如下所示:
第二个和第三个选项是更多的代码,但是它们会产生更好的结果。
这是一种可以从以下方面入手的方法:
相关问题 更多 >
编程相关推荐