此问题在此处已有答案:
How to draw vertical lines on a given plot(6个答案)
3小时前关门了。
这就是我现在的代码
import os
import sys
import pandas as pd
import matplotlib.pyplot as plt
import subprocess
import tempfile
import numpy as np
filepath = sys.argv[1]
try:
data = pd.read_csv(filepath,sep='\t',header=None,names=['timestamp', 'ch1', 'ch2', 'ch3', 'ch4', 'ch5', 'ch6'])
first = 0
last = -1
time = data["timestamp"][first:last].tolist()
ch1 = data["ch1"][first:last].tolist()
init = time[0]
for i in range(len(time)):
# using index instead of timestamp to be more accurate
time[i] = (i / 7000)
fig = plt.figure(figsize=(20,15))
fig.canvas.manager.set_window_title(sys.argv[1])
plt.plot(time, ch1)
plt.legend()
plt.grid()
plt.show()
每当ch1中的值达到4095时,我想画一条垂直线。我做了一些研究,并尝试使用以下代码:
plt.axvline(x=np.interp(4095, ch4, time),color='red')
我也试过用for循环遍历这些值,但我对Python和列表没有太多经验。
简而言之,我正在寻找一种方法,每当ch1中的值达到4095时绘制一条垂直线。
1条答案
按热度按时间m1m5dgzv1#
您需要找到时间轴上所有等于4095的点,并循环遍历它们,以便绘制多条垂直线
一个随机数的小例子:
如果将
vertical_lines
更改为time[ch1 >= 4095]
,则将绘制ch1值等于或大于4095的所有线