我正在尝试将绘图的 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.ytickax.set_yticklabels 选项失败后,我完全迷失了。

pandas - Seaborn 和 Pandas : How to set yticks formatted as UK pounds-LMLPHP

最佳答案

您可以使用 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)

pandas - Seaborn 和 Pandas : How to set yticks formatted as UK pounds-LMLPHP
fmt = '£{x:,.2f}' 中的逗号打开千位分隔符,因此它也可以按您需要的方式工作以获得更高的数量。

关于pandas - Seaborn 和 Pandas : How to set yticks formatted as UK pounds,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38255190/

10-12 21:50