1
我试图如何设置matplotlib.dates.DateFormatter不同语言
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'))
但Y轴标签ploted不喜欢00Z07Oct但00Z0710□ (可能ploted在我的语言环境中,日本和字符乱码。)
在另一方面,我试图,
import locale
locale.setlocale(locale.LC_TIME,'en_US')
print datetime(2009,10,7,0).strftime(''%Hz%d%b)
结果是
00z07Oct
这很好。
如何在不同语言环境下为英语设置matplotlib.dates.DateFormatter? 任何帮助,将不胜感激。
谢谢你回答我的问题。不幸的是,您的两个解决方案都不能很好地工你知道如何设置matplotlib的默认语言环境吗? – Tetsuro
很抱歉听说没有一个工作。你确定如果你定义一个新的'DateFormatter'提到的唯一区别它不起作用?从你的评论'datetime(2009,10,7,0).strftime('%Hz%d%b')'给出了正确的字符串,我会认为它的工作。但遗憾的是我无法复制您的问题,所以我无法真正检查解决方案是否正常工作。 Matplotlib并没有真正的语言环境,但是有一个名为'axes.formatter.use_locale'的配置,如果'True'会使用系统的语言环境。对于轴格式化程序(但查看源代码,如果设置它似乎没有帮助)。 – tiago
是的,我用'dt.strftime(fmt)'在dates.py中替换'cbook.unicode_safe(dt.strftime(fmt))'。奇怪的是,在其他PC上尝试'locale.setlocale(locale.LC_ALL,'en_US')',它运行良好。当我在DateFormatter类代码中直接编写'locale.setlocale(locale.LC_ALL,'en_US')'时,这在两台PC上都能很好地工作。 – Tetsuro