增加matplotlib图形xaxis的大小和间距

时间:2019-03-01 06:51:39

标签: python pandas matplotlib

我有一个带有数千个x轴条目的条形图,其中每个xtick是一个单词。不幸的是,这两个词相互重叠。我不想使字体变小,因为您已经必须大幅度放大才能阅读任何内容。我增加了绘图的大小,但是它似乎并没有改变x轴的大小,而是有相当大的边距。

如何增加x轴的长度,以使刻度线之间的间距更好?

tree = ET.parse('Posts.xml')
root = tree.getroot()
cnt = Counter()

for child in root: 
    if child.get('Tags') and 'pytorch' in child.get('Tags') or child.get('Tags') and 'tensorflow' in child.get('Tags') or child.get('Tags') and 'keras' in child.get('Tags'):
        results = re.findall(r'<(.+?)>', child.get('Tags'))
        for tag in results:
            if tag != 'pytorch' and tag != 'keras' and tag != 'tensorflow':
                cnt[tag] += 1
cnt = {k:v for k,v in cnt.items() if v > 1.0}
df = pd.DataFrame.from_dict(cnt, orient='index')
plt.figure()
plt.rcParams["figure.figsize"] = (150,50)
df.plot(kind='bar')
plt.savefig('histogram.png')

1 个答案:

答案 0 :(得分:1)

一种不完善的解决方案,但我希望能展示出一种解决方法,如下所示:

num_plots = 10

sample_size = int(df.shape[0] / num_plots)

for i, n in enumerate(np.linspace(0, df.shape[0], num_plots+1, dtype=int)[:-1]):
    fig = plt.figure()
    df.iloc[n:n+sample_size, :].plot(kind='bar')
    # … format your figure here
    plt.savefig('histogram_{}.png'.format(i))
    plt.close()

在上面的代码中,您确定想要多少个图,然后生成在每个图中使用的df索引。但是,我会警告您,这不会绘制所有数据,并且功能不强大!如果要绘制所有数据,则应对其进行编辑以可靠地选择全部数据(例如,通过编辑np.linspace函数调用)。