Skip to content Skip to sidebar Skip to footer

Pandas To Matplotlib With Dollar Signs

Given the following data frame: import pandas as pd df=pd.DataFrame({'A':['$0-$20','$20+']}) df A 0 0−20 1 $20+ I'd like to create a bar chart in MatPlotLib but I can't

Solution 1:

To specify the xticklabels, pass tick_label=x to plt.bar.

Matplotlib parses labels using a subset of the TeX markup language. Dollar signs indicate the beginning (and end) of math mode. So pairs of bare dollar signs are getting unintentionally swallowed. Currently, there is no a way to disable mathtex parsing. So to prevent the dollar signs from being interpreted as math markup, replace the bare $ with \$:

df['A'] = df['A'].str.replace('$', '\$')

For example,

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame({'A': ['$0-$20', '$20+'], 'B': [10,20]})
df['A'] = df['A'].str.replace('$', '\$')

y = df['B']
x = df['A']
ind = np.arange(len(x))
fig, ax = plt.subplots(1, 1, figsize=(2, 2))

plt.bar(ind, y, 
        tick_label=x, 
        align='center', width=.5, edgecolor='none', 
        color='grey')
plt.show()

enter image description here


Alternatively, you could use df.plot(kind='bar'):

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame({'A': ['$0-$20', '$20+'], 'B': [10,20]})
df['A'] = df['A'].str.replace('$', '\$')

fig, ax = plt.subplots(1, 1, figsize=(2, 2))

df.plot(kind='bar', x='A', y='B',
        align='center', width=.5, edgecolor='none', 
        color='grey', ax=ax)
plt.xticks(rotation=25)
plt.show()

enter image description here

Post a Comment for "Pandas To Matplotlib With Dollar Signs"