我有一个带有数千个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')
答案 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
函数调用)。