3

私は試した

import locale
locale.setlocale(locale.LC_TIME,'en_US')
tyme = [datetime(2009,10,6,12) + timedelta(hours=6*i) for i in range(5)]
plt.contour(x, tyme, data)
ax=plt.gca()
ax.yaxis.set_major_formatter(matplotlib.dates.DateFormatter('%Hz%d%b'))

しかし、yaxis ラベルは 00Z07Oct ではなく 00Z0710□ のようにプロットされます (おそらく、私の言語環境である日本語でプロットされ、文字化けしています)。

一方、試してみたところ、

 import locale
 locale.setlocale(locale.LC_TIME,'en_US')
 print datetime(2009,10,7,0).strftime(''%Hz%d%b)

結果は

00z07Oct

これはうまくいきます。

異なる言語環境で英語の matplotlib.dates.DateFormatter を設定するにはどうすればよいですか? どんな助けでも大歓迎です。

4

2 に答える 2

2

これはユニコードの問題、特にmatplotlib.cbook.unicode_safe(). この関数は、実際DateFormatterには の出力の内部で実行されますstrftime。すべてのローカルを設定して、役立つかどうかを確認してください。

locale.setlocale(locale.LC_ALL,'en_US')

そうでない場合は、呼び出しDateFormatterを持たないnew を定義するだけです。cbook.unicode_safe()

return cbook.unicode_safe(dt.strftime(fmt))

と取り換える:

return dt.strftime(fmt)
于 2013-01-21T18:53:30.497 に答える