2016-11-03 10 views
2

サンプル番号の代わりにmm:ssを次の図に表示するにはどうすればよいですか?matplotlibのxラベルの分および秒フォーマット

enter image description here

私が試した:

def formatMS(miliseconds): 
    return time.strftime('%M:%S', time.gmtime(miliseconds//1000)) 

fig, ax = plt.subplots() 
plt.plot(segtime, segStrength) 
labels = [formatMS(t) for t in segtime] 
print labels 
ax.set_xticklabels(labels) 

しかし、今ではすべて午後12時を示しているが。この問題を解決するにはどうすればよいですか?ラベルを設定することの代替として

+0

各データポイントのラベルを作成しています。だから、あなたは10000ラベルを言うことになりますが、あなたのX軸は9ティックだけを表示します。 matplotlibは、あなたのラベルリストの最初の9つのエントリをこれらのティックに割り当てています。ラベルをamnuallayに設定するか、(おそらくもっと良い解決法)時間軸を 'datetime.datetime'に変換してみると、matplotlibが目盛りを処理します。こちらもご覧ください:http://stackoverflow.com/questions/19079143/how-to-plot-time-series-in-python –

答えて

2

、次のようにダニフォーマッタを使用することができます。

import matplotlib 
import matplotlib.pyplot as plt 
import time 


segtime = [1000, 2000, 3000, 3500, 7000] 
segStrength = [10000, 30000, 15000, 20000, 22000]  

fig, ax = plt.subplots() 
plt.plot(segtime, segStrength) 

formatter = matplotlib.ticker.FuncFormatter(lambda ms, x: time.strftime('%M:%S', time.gmtime(ms // 1000))) 
ax.xaxis.set_major_formatter(formatter) 

plt.show() 

これは、あなたを与えて、あなたが必要とする形式にチェックマークを変換します:

tick conversion

関連する問題