我正在尝试将绘图的 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
选项失败后,我完全迷失了。最佳答案
您可以使用 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}'
中的逗号打开千位分隔符,因此它也可以按您需要的方式工作以获得更高的数量。关于pandas - Seaborn 和 Pandas : How to set yticks formatted as UK pounds,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38255190/