我正在尝试将一个情节的yticks格式化为带有'£'的磅,最好是逗号分隔符。目前yticks的代表如下:20000,30000,40000。我的目标是:20,000英镑,30,000英镑,40,000英镑等等。
以下是一个等效的可重复示例:
import seaborn as sis
tips = sns.load_dataset("tips")
sns.boxplot(x="day", y="tip", data=tips, whis=np.inf)
sns.stripplot(x="day", y="tip", data=tips, jitter=True)
我如何格式化这样的yticks:£12.00,£10.00,£8.00等。
经过3个小时的谷歌搜索并且失败了各种plt.ytick
和ax.set_yticklabels
选项后,我完全迷失了。
答案 0 :(得分:8)
您可以使用StrMethodFormatter
,它使用str.format()
规范迷你语言。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as mtick
import seaborn as sns
fig, ax = plt.subplots()
# The next line uses `utf-8` encoding. If you're using something else
# (say `ascii`, the default for Python 2), use
# `fmt = u'\N{pound sign}{x:,.2f}'`
# instead.
fmt = '£{x:,.2f}'
tick = mtick.StrMethodFormatter(fmt)
ax.yaxis.set_major_formatter(tick)
tips = sns.load_dataset("tips")
sns.boxplot(x="day", y="tip", data=tips, whis=np.inf, ax=ax)
sns.stripplot(x="day", y="tip", data=tips, jitter=True, ax=ax)
fmt = '£{x:,.2f}'
中的逗号会启用千位分隔符,因此它也会按照您想要的更高金额运行。