Seaborn散点图、热力图及透视表去除科学计数法方法咨询
消除Seaborn可视化及关联透视表场景下的科学计数法
触发原因
Matplotlib默认的轴域格式化机制,会在数值绝对值过大或过小时自动切换为科学计数法展示;pandas生成透视表、Seaborn渲染热力图标注时会继承这套格式规则,最终导致散点图坐标轴、透视表打印结果、热力图标注三个环节同时出现非预期的科学计数法。
对应代码调整方案
1. 散点图轴域科学计数法消除
在原有散点图代码基础上,直接获取当前绘图的轴对象,强制关闭科学计数法格式化规则:
# 原有散点图代码 plt.figure(figsize=(15,7)) sns.scatterplot(x='Price_in_Lac', y='Kilometers_Driven', hue='Location', data=df) # 新增配置:强制x、y轴使用普通数值格式,关闭科学计数法 current_ax = plt.gca() current_ax.xaxis.get_major_formatter().set_scientific(False) current_ax.yaxis.get_major_formatter().set_scientific(False) plt.show()
如果需要对脚本内所有绘图任务统一生效,可以在代码最开头添加全局配置,无需后续逐图调整:
# 全局关闭所有轴域的科学计数法触发规则 plt.rcParams['axes.formatter.useoffset'] = False plt.rcParams['axes.formatter.scientific'] = False
2. 透视表与热力图标注的科学计数法消除
- 先解决pandas透视表打印时的科学计数法问题,提前配置pandas浮点数显示规则:
# 配置pandas全局显示规则,所有浮点数固定保留2位小数,不触发科学计数法 pd.set_option('display.float_format', lambda val: f'{val:.2f}')
- 再调整热力图的标注格式参数,避免Seaborn自动用科学计数法渲染标注值:
df_hm = df.pivot_table(index='Brand', columns='Location', values="Price_in_Lac", aggfunc=np.median) f, ax = plt.subplots(figsize=(15,10)) # 新增fmt参数,强制标注使用固定小数位的普通数值格式 sns.heatmap(df_hm, cmap='coolwarm', linewidths=.5, annot=True, fmt='.2f', ax=ax)
参数适配提示:如果需要展示整数级别的数值(例如大里程、大金额数值),将fmt='.2f'替换为fmt='.0f'即可。
内容的提问来源于stack exchange,提问作者Ananya
相关产品推荐
相关产品推荐

