2016-07-01 3 views
3

Учитывая следующий кадр данных:Панды в Matplotlib со знаками доллара

import pandas as pd 
df=pd.DataFrame({'A':['$0-$20','$20+']}) 
df 
    A 
0 0−20 
1 $20+ 

Я хотел бы создать гистограмму в Matplotlib, но я не могу показаться, чтобы получить знаки доллара, чтобы показать правильно.

Вот что у меня есть:

import matplotlib.pyplot as plt 
import numpy as np 

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

plt.bar(ind, y, align='center', width=.5, edgecolor='none', color='grey') 
ax.patch.set_facecolor('none') 
ax.patch.set_alpha(0) 
ax.set_ylim([0,5]) 
ax.set_xlabel(x,fontsize=12,rotation=0,color='grey') 
ax.set_xticklabels('') 
ax.set_yticklabels('') 

enter image description here

я могу получить ярлыки для отображения «лучше», если я использую df.A.values.tolist(), но только корректирует формат. Я бы хотел, чтобы каждый ярлык отображался под каждым баром с предполагаемым оригинальным форматом (со знаками доллара).

Заранее благодарен!

ответ

2

Чтобы уточнить символы, перейдите на страницу tick_label=x на номер plt.bar.

Matplotlib анализирует метки, используя подмножество TeX markup language. Знаки доллара указывают начало (и конец) математического режима. Таким образом, пары голого знака доллара получают непреднамеренное проглатывание. В настоящее время нет пути к disable mathtex parsing. Таким образом, чтобы предотвратить признаки доллара от интерпретации в качестве математической разметки, заменить голой $ с \$:

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

Например,

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


В качестве альтернативы, вы могли бы использование 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

+0

Как чемпион! Благодаря! –

+0

Последующий вопрос здесь: http://stackoverflow.com/questions/38152356/matplotlib-dollar-sign-with-thousands-comma-tick-labels –

Смежные вопросы