【问题标题】:Pandas to MatPlotLib with Dollar Signs带有美元符号的熊猫到 MatPlotLib
【发布时间】:2016-11-04 05:36:42
【问题描述】:

给定以下数据框:

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('')

如果我使用df.A.values.tolist(),我可以让标签显示“更好”,但这只是更正了格式。 我希望每个标签以预期的原始格式(带有美元符号)显示在每个条形下方。

提前致谢!

【问题讨论】:

    标签: python-3.x pandas matplotlib axis-labels dollar-sign


    【解决方案1】:

    要指定 xticklabels,请将 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()
    


    或者,您可以使用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()
    

    【讨论】:

    猜你喜欢
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 2017-04-01
    相关资源
    最近更新 更多