Seaborn facetgrid将逗号添加到y轴标签[重复]

Posted

技术标签:

【中文标题】Seaborn facetgrid将逗号添加到y轴标签[重复]【英文标题】:Seaborn facetgrid add commas to y axis labels [duplicate] 【发布时间】:2020-11-27 15:41:19 【问题描述】:

我目前有这个图表,使用以下方法创建:

fg = sns.catplot(x='metric', y='number', hue='drop', data=df, kind='bar')

我需要将轴标签更改为逗号。

我试过了:

df['number'] = df['number'].apply(lambda x: ":,".format(x))

但是这个错误,因为 x 或 y 值都不是数字(上面将数据类型从数字更改为对象)。

如何在 y 轴值中获取逗号?

我不能使用 get_yaxis().set_major_formatter 因为这不是 facetgrid 的属性。

【问题讨论】:

仅供参考,您可以使用 fg.axes 获取坐标区对象,如图所示 here 【参考方案1】:

以下代码中的 for 循环使用 StrMethodFormatter 创建逗号格式。

import matplotlib.pyplot as plt
from matplotlib.ticker import StrMethodFormatter
import matplotlib.ticker as ticker
import pandas as pd
import seaborn as sns

#Theme
sns.set(style="darkgrid")

#Example data frame
df = pd.DataFrame()
df["Value"]    = [1000000, 2000000, 3000000, 2000000, 5000000] 
df["Category"] = ["A","B","C","D","E"]
fg = sns.catplot(x='Category', y='Value', data=df, kind='bar')

for ax in fg.axes.flat:
    ax.yaxis.set_major_formatter(ticker.StrMethodFormatter('x:,.0f'))

#So that axis show
plt.tight_layout()

#Show plot
plt.show()

【讨论】:

以上是关于Seaborn facetgrid将逗号添加到y轴标签[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python。在 Seaborn Facetgrid 上使用两个 y 轴绘制线图和条形图

在 seaborn facetgrid 的各个方面设置轴限制

如何反转 seaborn 图形级别图的轴(FacetGrid)

在 seaborn 中使用 FacetGrid 为所有方面重复 x 轴标签

如何将单个 vlines 添加到 seaborn FacetGrid 的每个子图

Seaborn FacetGrid - 在最后一个子图之后放置单个颜色条