Kor*_*ose 5 python matplotlib python-3.x seaborn
目前我正在尝试可视化我正在使用seaborn处理的一些数据。我需要使用逗号作为小数点分隔符,所以我正在考虑简单地更改区域设置。我找到了类似问题的答案,它设置区域设置并使用 matplotlib 来绘制一些数据。
这也适用于我,但是当直接使用 seaborn 而不是 matplotlib 时,它不再使用区域设置。不幸的是,我在seaborn中找不到任何可以更改的设置或任何其他解决方法。有办法吗?
这里有一些示例性数据。请注意,我必须使用'german'而不是"de_DE". xlabel 均使用标准点作为小数点分隔符。
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)
Run Code Online (Sandbox Code Playgroud)
此类箱线图的 x 轴上显示的“数字”是通过 a 确定的
matplotlib.ticker.FixedFormatter(通过 找出print(ax.xaxis.get_major_formatter()))。这个固定格式化程序只是将标签从标签列表中逐个添加到刻度上。这是有道理的,因为您的框位于0和1,但您希望它们被标记为0.3, 0.7。我想当考虑带有df.columns=["apple","banana"].
因此,它FixedFormatter会忽略区域设置,因为它只采用标签的原样。我在这里提出的解决方案(尽管评论中的一些同样有效)是自己格式化标签。
ax.set_xticklabels(["{:n}".format(l) for l in df.columns])
Run Code Online (Sandbox Code Playgroud)
这里的格式n与通常的格式相同g,但考虑了区域设置。(参见python 格式迷你语言)。当然,使用任何其他选择的格式同样是可能的。ax.set_xticklabels另请注意,由于箱线图使用固定位置,因此在此处设置标签仅有效。对于具有连续轴的其他类型的图,不建议这样做,而应使用链接答案中的概念。
完整代码:
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
df = pd.DataFrame([[1,2,3],[4,5,6]]).T
df.columns = [0.3,0.7]
ax = sns.boxplot(data=df)
ax.set_xticklabels(["{:n}".format(l) for l in df.columns])
plt.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
632 次 |
| 最近记录: |