Skip to content
Advertisement

How to get rid of scientific notation on bar labels in matplotlib?

How could I format the bar labels to remove the scientific notation?

highest_enrollment = course_data.groupby(
    "course_organization")["course_students_enrolled"].sum().nlargest(10)

ax = sns.barplot(x=highest_enrollment.index, 
                 y=highest_enrollment.values, 
                 ci=None, 
                 palette="ch: s=.5, r=-.5")

ax.ticklabel_format(style='plain', axis="y")

plt.xticks(rotation=90)

ax.bar_label(ax.containers[0])

plt.show()

barplot

Advertisement

Answer

As already suggested by BigBen in the comment, you can pass fmt parameter to matplotlib.axes.Axes.bar_label; you can use %d for integers:

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

highest_enrollment = pd.DataFrame({'class': ['A', 'B', 'C'],
                   'values': [30000000, 20000000, 10000000]})

ax = sns.barplot(data = highest_enrollment, x = 'class', y = 'values', palette="ch: s=.5, r=-.5")

ax.ticklabel_format(style='plain', axis="y")

plt.xticks(rotation=90)

ax.bar_label(ax.containers[0], fmt = '%d')

plt.show()

enter image description here

User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement