我正在將一些舊的 Python 2.7 代碼轉換為 3.6。我的例程繪制第一行 OK,但后續行似乎從前一行停止的地方開始。(在www.pythonanywhere.com在線運行)
我的代碼:
import matplotlib
from matplotlib import pyplot;
k = 0
while k < len(Stations):
# Draw the graph
fig.patch.set_facecolor('black') # Outside border
pyplot.rcParams['axes.facecolor'] = 'black' # Graph background
pyplot.rcParams['axes.edgecolor'] = 'red'
pyplot.tick_params(axis='x', colors='yellow')
pyplot.tick_params(axis='y', colors='yellow')
pyplot.ylim(float(BtmLimit),float(TopLimit))
pyplot.ylabel("Percent of normal range.", size=10, color = "yellow")
pyplot.xticks([]) # Hide X axis
pyplot.title("Plotted at %sGMT, %s %s %s" % (thour, tday, tdate, tmonth), color = "yellow")
if Error == 'False': pyplot.plot(Epoch, Scaled, color = (Color), linewidth=1.9)
pyplot.plot(Epoch, Top, color = [0,0.5,0]) # Green lines
pyplot.plot(Epoch, Btm, color = [0,0.5,0])
k = k 1
pyplot.savefig(SD 'RiverLevels.png', facecolor='black', bbox_inches='tight')
pyplot.show()
pyplot.close()
資料如下所示:
大紀元[ '1638046800', '1638047700', '1638048600', '1638049500', '1638050400', '1638051300', '1638052200', '1638053100', '1638054000', '1638054900', '1638 055800', '1638056700' , '1638057600', '1638058500', '1638059400', '1638060300', '1638061200', '1638062100', '1638063000', '1638063900', '1638064800', '1638065700', '1638066600', '1638067500',“ 1638068400' , '1638069300', '1638070200', '1638071100', '1638072000', '1638072900', '1638073800','16 38074700' , '1638075600', '1638076500', '1638077400', '1638078300',“1638079200 ', '1638080100', '1638081000' , '1638081900', '1638082800', '16380837 00', '1638084600', '1638085500', '1638086400', '1638087300', '1638088200', '1638089100', '1638090000', '1638090900',“1638091800 '、'1638092700'、'1638093600'、'1638094500'、'1638095400']
縮放['32 0.475247524752476' ,'33 0.069306930693074' ,'33 0.76237623762376' ,'33 0.56435643564357' ,'33 0.56435643564357' ,'33 0.86138613861387' ,'34 0.1584158415841 6' ,'34 0.35643564356436' ,'34 0.554455445544555' ,'34 0.554455445544555' ,'34 0.75247524752476' ,'34 0.95049504950495' ,'35 0.049504950495056' ,'35 0.148514851 48515' ,'35 0.049504950495056' ,'35 0.14851485148515' ,'35 0.44554455445545' ,'35 0.54455445544555' ,'35 0.54455445544555' ,'35 0.34653465346535' ,'35 0.5445544 5544555' ,'35 0.64356435643565' ,'35 0.84158415841585' ,'35 0.742574257425744' , '35.54455445544555', '35.44554455445545', '35.44554455445545', '35.34653 465346535', '35.25547254'35 0.049504950495056' ,'34 0.95049504950495' ,'34 0.95049504950495' ,'34 0.851485148514854' ,'34 0.65346534653466' ,'34 0.35 643564356436' ,'34 0.15841584158416' ,'34 0.35643564356436' ,'34 0.35643564356436' ,'34 0.25742574257426' ,'34 0.05940594059406' ,'33 0.86138613861387' ,' 33.6 63366336633665' ,'33 0.86138613861387' ,'33 0.663366336633665' ,'33 0.663366336633665' ,'33 0.46534653465347' ,'33 0.366336633663366' ,'33 0.56435643564357' ,'33 0.663366336633665' ,'33 0.663366336633665' ,'33 0.663366336633665' ,'33 0.663366336633665' ,'33 0.960396039603964' ,'34 0.05940594059406 ', '34.05940594059 406']'34 0.851485148514854' ,'34 0.65346534653466' ,'34 0.35 643564356436' ,'34 0.15841584158416' ,'34 0.35643564356436' ,'34 0.35643564356436' ,'34 0.25742574257426' ,'34 0.05940594059406' ,'33 0.86138613861387' ,'33 0.6 63366336633665' ,'33 0.86138613861387' ,'33 0.663366336633665' , '33 0.663366336633665' ,'33 0.46534653465347' ,'33 0.366336633663366' ,'33 0.56435643564357' ,'33 0.663366336633665' ,'33 0.663366336633665' ,'33 0.663366336633665' ,'33 0.663366336633665' ,'33 0.960396039603964' ,'34 0.05940594059406' ,'34 0.05940594059 406' ]'34 0.851485148514854' ,'34 0.65346534653466' ,'34 0.35 643564356436' ,'34 0.15841584158416' ,'34 0.35643564356436' ,'34 0.35643564356436' ,'34 0.25742574257426' ,'34 0.05940594059406' ,'33 0.86138613861387' ,'33 0.6 63366336633665' ,'33 0.86138613861387' ,'33 0.663366336633665' , '33 0.663366336633665' ,'33 0.46534653465347' ,'33 0.366336633663366' ,'33 0.56435643564357' ,'33 0.663366336633665' ,'33 0.663366336633665' ,'33 0.663366336633665' ,'33 0.663366336633665' ,'33 0.960396039603964' ,'34 0.05940594059406' ,'34 0.05940594059 406' ]25742574257426' ,'34 0.05940594059406' ,'33 0.86138613861387' ,'33 0.6 63366336633665' ,'33 0.86138613861387' ,'33 0.663366336633665' ,'33 0.663366336633665' ,'33 0.46534653465347' ,'33 0.366336633663366' ,'33 0.56435643564357' ,'33 0.663366336633665' ,'33 0.663366336633665' ,'33 0.663366336633665 ', '33.663366336633665', '33.960396039603964', '34.05940594059406', '34.05940594059 406']25742574257426' ,'34 0.05940594059406' ,'33 0.86138613861387' ,'33 0.6 63366336633665' ,'33 0.86138613861387' ,'33 0.663366336633665' ,'33 0.663366336633665' ,'33 0.46534653465347' ,'33 0.366336633663366' ,'33 0.56435643564357' ,'33 0.663366336633665' ,'33 0.663366336633665' ,'33 0.663366336633665 ', '33.663366336633665', '33.960396039603964', '34.05940594059406', '34.05940594059 406']663366336633665'、'33.663366336633665'、'33.960396039603964'、'34.05940594059406'、'34.059405404055663366336633665'、'33.663366336633665'、'33.960396039603964'、'34.05940594059406'、'34.059405404055
輸出影像
uj5u.com熱心網友回復:
我想這可能是由于使用字串而不是數字。當您使用字串時,這些x值被視為類別,而不是按數字排序,而是按照它們在串列中出現的順序(除非類別完全重復)。我知道該片段并不完整,但每次迭代時Epoch和的值Scaled實際上都會發生變化。
繪制第一組資料后,第一組中不存在的任何值將位于第一組的“之后”(即:在 中第一組的最后一個點的右側x,并且高于 中的最后一個點y)。當繪制第二組資料時,前一組資料中x沒有出現第一個值,因此它們在之后繪制(圖中淺藍色線的開始),而不管它們的數值如何。然后,最終值與第一組中出現的值相同,因此該線回到圖的左側。
您可以嘗試在圖中使用[float(x) for x in Epoch]和[float(y) for y in Scaled]。正如我看到的,代表數字的字串中有空格,您可以使用這樣的函式:
def flist_from_slist(data):
return [float(x.replace(' ', '')) for x in data]
并將 pyplot.plot 呼叫替換為:
pyplot.plot(flist_from_slist(Epoch), flist_from_slist(Scaled), linewidth=1.9)
此外,回圈內部有很多代碼可以移到外部(設定刻度、標簽等)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/374581.html
標籤:Python matplotlib
上一篇:非數字DataFrame的散點圖
下一篇:如何調整條形寬度以匹配輔助x軸?
