如何取消DataFrame水平条形图的轴科学计数法,显示完整数值?
Pandas水平条形图坐标轴科学计数法转完整数值的解决方法
我用Pandas的DataFrame绘制水平条形图时,坐标轴默认显示为科学计数法,希望改成完整的数值格式。代码如下:
import numpy as np import matplotlib.pyplot as plt import pandas as pd import matplotlib.style data = {'V': [116302,797183,1736044,311815,83692,131565], 'O': [59019,381176,896383,168083,41923,77694], 'I': [57283,416007,839661,143732,41769,53871] } df = pd.DataFrame(data,columns=['V','O','I'], index = ['1550','1600','1650','1700','1750','1800']) plt.style.use('seaborn-bright') df.plot.barh() plt.show()
当前图表效果:
方法一:直接关闭科学计数法
调用matplotlib的ticklabel_format方法,指定坐标轴(水平条形图的数值轴是x轴)关闭科学计数法,简单直接:
修改后的完整代码:
import numpy as np import matplotlib.pyplot as plt import pandas as pd import matplotlib.style data = {'V': [116302,797183,1736044,311815,83692,131565], 'O': [59019,381176,896383,168083,41923,77694], 'I': [57283,416007,839661,143732,41769,53871] } df = pd.DataFrame(data,columns=['V','O','I'], index = ['1550','1600','1650','1700','1750','1800']) plt.style.use('seaborn-bright') df.plot.barh() # 关闭x轴科学计数法,显示完整数值 plt.ticklabel_format(axis='x', style='plain', useOffset=False) plt.show()
关键参数说明:
axis='x':指定设置水平条形图的数值轴(x轴)style='plain':切换为普通数值格式,禁用科学计数法useOffset=False:避免添加偏移量前缀,直接显示完整数字
方法二:自定义格式化函数(支持个性化显示)
如果需要更灵活的格式(比如添加千分分隔符),可以使用FuncFormatter自定义格式化规则:
import numpy as np import matplotlib.pyplot as plt import pandas as pd import matplotlib.style from matplotlib.ticker import FuncFormatter data = {'V': [116302,797183,1736044,311815,83692,131565], 'O': [59019,381176,896383,168083,41923,77694], 'I': [57283,416007,839661,143732,41769,53871] } df = pd.DataFrame(data,columns=['V','O','I'], index = ['1550','1600','1650','1700','1750','1800']) plt.style.use('seaborn-bright') ax = df.plot.barh() # 定义格式化函数,显示带千分分隔符的完整数字 def format_num(x, pos): return f'{int(x):,}' # 将格式化规则应用到x轴 ax.xaxis.set_major_formatter(FuncFormatter(format_num)) plt.show()
内容的提问来源于stack exchange,提问作者Minatorecoin
相关产品推荐
相关产品推荐

