2 回答

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊
主要瓶頸似乎是調(diào)用,它為這 15k 點(diǎn)中的每一個(gè)autofmt_xdate()點(diǎn)添加了一個(gè)日期標(biāo)簽。發(fā)生這種情況是因?yàn)槟?x 標(biāo)簽實(shí)際上不是日期;而是日期。就 pyplot 而言,它們只是任意字符串,因此它不知道要保留哪些以及要丟棄哪些。y 標(biāo)簽也發(fā)生了類似的情況。
將 x 解析為datetime對(duì)象,將 y 解析為floats:
from datetime import datetime
...
x = [datetime.strptime(line.split('\t')[0], '%Y-%m-%d %H:%M:%S') for line in lines]
y = [float(line.split('\t')[1]) for line in lines]
現(xiàn)在,我在 x 軸上每小時(shí)獲得一次刻度,在 y 軸上每 2.5 度獲得一次刻度。渲染幾乎是瞬時(shí)的。
在嘗試?yán)L制數(shù)據(jù)之前,您還應(yīng)該考慮對(duì)數(shù)據(jù)進(jìn)行下采樣。無論如何,15000 點(diǎn)遠(yuǎn)遠(yuǎn)超出了典型計(jì)算機(jī)屏幕的水平分辨率。

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以使用pandas讀取文件,這可能比循環(huán)內(nèi)容更快。
(...)
def plot(self):
? ? df = pd.read_csv('testdata.txt', sep='\t', header=None, parse_dates=[0])
? ? (...)
? ? # plot data
? ? ax.plot(df[0], df[1], c='r', label='temperature')
添加回答
舉報(bào)