Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 限制xticks熊猫条形图中的字符_Python_Pandas_Matplotlib_Formatting - Fatal编程技术网

Python 限制xticks熊猫条形图中的字符

Python 限制xticks熊猫条形图中的字符,python,pandas,matplotlib,formatting,Python,Pandas,Matplotlib,Formatting,我有以下代码: df = input_df_.loc[input_df_.index.isin(inds)] df = df.drop(expected_metrics+metrics+['AgeNBR'],axis=1).mean()\ .sort_values(ascending=False)[:25] df.plot(kind='bar',width=.4,position=1,color='red') full_df = input

我有以下代码:

    df = input_df_.loc[input_df_.index.isin(inds)]
    df = df.drop(expected_metrics+metrics+['AgeNBR'],axis=1).mean()\
            .sort_values(ascending=False)[:25]
    df.plot(kind='bar',width=.4,position=1,color='red')
    full_df = input_df_[df.index].mean()
    full_df.plot(kind='bar',width=.4,position=0,color='blue')

    plt.show()

    difference = full_df - df

    difference.plot(kind='bar',color =  ['r' if x > 0 else 'b' for x in difference.values])
    plt.show()

代码是有效的,但由于某些x记号非常长,两个图像最终相距甚远。有没有办法限制单个x记号中文本的大小?类似于前7个字符的内容?

您可以使用以下方法获取x记号:

locs, labels = xticks()
然后,您可以在标签上迭代,只显示前7个字符,其中包括:

for label in labels:
label=label[:7]

必须缩短标签文本,如:

...
ax=plt.gca()
ax.set_xticklabels(item.get_text()[:10] for item in ax.get_xticklabels())
...

完成此步骤后,您的标签将存储10个符号。

以下是提问者解决此问题的方法:

    plt.subplot(1,2,1)
    df.plot(kind='bar',width=.4,position=1,color='red')
    full_df = input_df_[df.index].mean()
    full_df.plot(kind='bar',width=.4,position=0,color='blue')\
        .set_xticklabels([str(tick)[:45] for tick in full_df.index])
    plt.xticks(fontsize=20)
    plt.yticks(fontsize=20)
    plt.gca().set_title('Selected and full feature set averages',fontsize=30)

    plt.subplot(1,2,2)     
    difference = df - full_df 

    difference.plot(kind='bar',color =  ['r' if x > 0 else 'b' for x in difference.values]).\
        set_xticklabels([str(tick)[:45] for tick in difference.index])
    plt.xticks(fontsize=20)
    plt.yticks(fontsize=20)
    plt.gca().set_title('Selected minus full feature set averages', fontsize=30)
    plt.show()

请不要对您的问题添加答案。答案是答案,应添加为答案。除此之外,您的方法仅适用于分类图,而其他答案适用于任何类型的图..setxticklabels([str(tick)[:45]表示完整索引中的tick])有效,但其副作用是在图之外打印一个索引元组。。。至少在我的实现版本中。