我从示波器读取波形。波形被分成10段作为时间的函数。我想绘制完整的波形,一个是在另一个上方(或下方),一个是垂直偏移'可以这么说。另外,需要彩色图来显示信号强度。我只能得到以下情节:
如您所见,所有曲线都是叠加的,这是不可接受的。可以为y数据添加偏移量,但这不是我想要的方式。当然有一种更简洁的方式来绘制我的数据?我已经尝试过使用pylab解决这个问题的一些事情,但我甚至不确定如何继续,如果这是正确的方法。
任何帮助将不胜感激。
import readTrc #helps read binary data from an oscilloscope
import matplotlib.pyplot as plt
fName = r"...trc"
datX, datY, m = readTrc.readTrc(fName)
segments = m['SUBARRAY_COUNT'] #number of segments
x, y = [], []
for i in range(segments+1):
x.append(datX[segments*i:segments*(i+1)])
y.append(datY[segments*i:segments*(i+1)])
plt.plot(x,y)
plt.show()
答案 0 :(得分:3)
垂直偏移的情节听起来像https://www.wikidata.org/w/api.php frequency trail
的一种方法只是调整y值。
同样的情节也被创造了一个地图/山脊线图。 Seaborn有一个实现可以创建一系列图(FacetGrid),然后调整它们之间的偏移量以获得类似的效果。
使用折线图的示例可能如下所示:
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
segments = 10
points_per_segment = 100
#your data preparation will vary
x = np.tile(np.arange(points_per_segment), segments)
z = np.floor(np.arange(points_per_segment * segments)/points_per_segment)
y = np.sin(x * (1 + z))
df = pd.DataFrame({'x': x, 'y': y, 'z': z})
pal = sns.color_palette()
g = sns.FacetGrid(df, row="z", hue="z", aspect=15, size=.5, palette=pal)
g.map(plt.plot, 'x', 'y')
g.map(plt.axhline, y=0, lw=2, clip_on=False)
# Set the subplots to overlap
g.fig.subplots_adjust(hspace=-.00)
g.set_titles("")
g.set(yticks=[])
g.despine(bottom=True, left=True)
plt.show()