我有與地震日期,經度和大小文件列表,像如下:繪圖點作爲最新的功能
2015-11-12 22.86 5.20
2015-11-18 15.12 4.25
2015-11-20 12.91 7.85
.......... ..... ....
,我想上繪製圖表點,用顏色取決於mag
的大小,y軸上的參數爲date
,y軸上的參數爲long
。我正在努力做到這一點,但困難的部分是讓腳本將日期作爲數字讀取......先謝謝您。
我有與地震日期,經度和大小文件列表,像如下:繪圖點作爲最新的功能
2015-11-12 22.86 5.20
2015-11-18 15.12 4.25
2015-11-20 12.91 7.85
.......... ..... ....
,我想上繪製圖表點,用顏色取決於mag
的大小,y軸上的參數爲date
,y軸上的參數爲long
。我正在努力做到這一點,但困難的部分是讓腳本將日期作爲數字讀取......先謝謝您。
您可以使用時間戳用數字表示日期。日期時間模塊對此有用。尋找datetime.strptime。 在你的情況下,將
datetime.datetime.strptime(your_date, '%Y-%m-%d').timestamp()
如果你這樣做你得到一個不錯的表示所有日期。蜱會很醜,但你必須手動解決。可能有一些功能模塊可以規避將日期轉換爲數字的所有問題,因此可能需要研究這些問題。
考慮到你正在使用matplotlib生成圖形和ritcher規模來衡量地震的震級,我們就可以用散點圖到每個點。輔助功能允許我們根據點值選擇所需的顏色。由此產生的代碼如下:
import math
from datetime import datetime
import matplotlib.pyplot as plt
#Function to convert
def obterCor(valor):
cores = {2.0: '#37e52b', 2.9: '#1887bf', 3.9: '#1745d1', 4.9: '#e9ed1e', 5.9: '#f79c09', 6.9: '#f76409', 7.9: '#ff0000', 8.9: '#ea17c7', 100.0: '#9800ff'}
cor = '#37e52b'
for k,v in sorted(cores.iteritems()):
if valor <= k:
cor = v
break
return cor
#Data
linhas = [ x.strip() for x in open('arquivo.txt', 'r') ]
x = []
y = []
z = []
for l in linhas:
l = l.split()
x.append(datetime.strptime(l[0], "%Y-%m-%d"))
y.append(float(l[1]))
z.append(obterCor(float(l[2])))
#Plotting
plt.xlabel('Date')
plt.ylabel('Longitude')
plt.scatter(x, y, c=z, alpha=0.5)
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
也許你應該看看'numpy'和'pandas'模塊,它們有很多功能來獲取統計數據並繪製它們。 – DainDwarf