1
我有一個腳本,其中包含多個.csv文件並輸出多個條形圖。數據是每日降雨總量,因此x軸是日間格式的日期%d %m %Y
。現在,代碼試圖在標籤中包含所有365天,但x軸被阻塞。例如,我可以使用哪些代碼,每月只包含一個標籤,格式爲「Jan 01」。使用matplotlib更改python條形圖中日期時間數據的x軸刻度標籤的頻率
import pandas as pd
import time
import os
import matplotlib.pyplot as plt
files = ['w.pod.csv',
't.pod.csv',
'r.pod.csv',
'n.pod.csv',
'm.pod.csv',
'k.pod.csv',
'j.pod.csv',
'h.pod.csv',
'g.pod.csv',
'c.pod.csv',
'b.pod.csv']
for f in files:
fn = f.split('.')[0]
dat = pd.read_csv(f)
df0 = dat.loc[:, ['TimeStamp', 'RF']]
# Change time format
df0["time"] = pd.to_datetime(df0["TimeStamp"])
df0["day"] = df0['time'].map(lambda x: x.day)
df0["month"] = df0['time'].map(lambda x: x.month)
df0["year"] = df0['time'].map(lambda x: x.year)
df0.to_csv('{}_1.csv'.format(fn), na_rep="0") # write to csv
# Combine for daily rainfall
df1 = pd.read_csv('{}_1.csv'.format(fn), encoding='latin-1',
usecols=['day', 'month', 'year', 'RF', 'TimeStamp'])
df2 = df1.groupby(['day', 'month', 'year'], as_index=False).sum()
df2.to_csv('{}_2.csv'.format(fn), na_rep="0", header=None) # write to csv
# parse date
df3 = pd.read_csv('{}_2.csv'.format(fn), header=None, index_col='datetime',
parse_dates={'datetime': [1,2,3]},
date_parser=lambda x: pd.datetime.strptime(x, '%d %m %Y'))
def dt_parse(date_string):
dt = pd.datetime.strptime(date_string, '%d %m %Y')
return dt
# sort datetime
df4 = df3.sort()
final = df4.reset_index()
# rename columns
final.columns = ['date', 'bleh', 'rf']
[![enter image description here][1]][1] final[['date','rf']].plot(kind='bar')
plt.suptitle('{} Rainfall 2015-2016'.format(fn), fontsize=20)
plt.xlabel('Date', fontsize=18)
plt.ylabel('Rain/mm', fontsize=16)
plt.savefig('{}.png'.format(fn))
這是我的前一個問題的延伸:Automate making multiple plots in python using several .csv files
它幾乎作品!我剛剛收到錯誤消息「Traceback」(最近一次調用的最後一個): 文件「」,第1行,在 NameError:在'ax.xaxis.set_major_formatter(ticker.FixedFormatter (ticklabels))'。我需要爲此導入一個包嗎? @jezrael –
JAG2024
您只需要首先將'import matplotlib.ticker作爲ticker'。 – jezrael
謝謝!這工作。 – JAG2024