【发布时间】:2018-10-01 11:37:44
【问题描述】:
目前我正在尝试可视化我正在使用 seaborn 处理的一些数据。我需要使用逗号作为小数分隔符,所以我正在考虑简单地更改语言环境。我找到了this 对类似问题的回答,它设置了语言环境并使用 matplotlib 来绘制一些数据。
这也适用于我,但是当直接使用 seaborn 而不是 matplotlib 时,它不再使用语言环境。不幸的是,我在 seaborn 或任何其他解决方法中找不到任何可以更改的设置。有什么办法吗?
这里有一些示例性数据。请注意,我必须使用'german' 而不是"de_DE"。 xlabels 都使用标准点作为小数点分隔符。
import locale
# Set to German locale to get comma decimal separator
locale.setlocale(locale.LC_NUMERIC, 'german')
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# Tell matplotlib to use the locale we set above
plt.rcParams['axes.formatter.use_locale'] = True
df = pd.DataFrame([[1,2,3],[4,5,6]]).T
df.columns = [0.3,0.7]
sns.boxplot(data=df)
【问题讨论】:
-
试过类似的东西(见this答案)。不幸的是,这也不起作用。
-
这对我来说似乎不是一个海上问题。虽然使用
plt.plot愉快地根据所选语言环境格式化其标签,但通过plt.boxplot(df.T, positions=list(df.columns))直接调用matplotlib 函数会忽略语言环境。所以在我看来,这是由于positions关键字在 matplotlib 中的处理方式。 -
在没有真正解决根本问题的情况下,获取 x 轴上带逗号的数字的愚蠢方法是将
df.columns设置为适当的字符串:df.columns = ["0,3", "0,7"] -
@jdamp 很不幸。似乎最快和最简单的方法是将数字转换为适当的字符串。谢谢!
-
@jdamp seaborn 宁愿调用类似
plt.boxplot(df.T, positions=range(len(df.columns)), labels=df.columns)的东西,所以这里相关的不是位置,而是标签。此外,分析非常正确。
标签: python python-3.x matplotlib seaborn