如何正确绘制超大刻度线?

时间:2018-09-27 06:44:49

标签: python matplotlib plot graph

a tick的文本标签过长时,经常需要旋转它以防止文本重叠。我在这里遇到的问题是,当matplotlib长于图形的大小时,它将仅显示其中的一部分。

1。有没有一种方法可以扩展图形底部的边缘以使其适合所有文本?

2。如果最好使用水平线,是否可以将文本放在两行或更多行中,以使它们不重叠?

下面是一个截取文本的示例: enter image description here

我尝试与

adjust the size
plt.figure(figsize=(50,50))

,但只会导致图形中每个元素成比例增加。

我尝试通过

调整margin
plt.tight_layout()

,但似乎要与图形内容权衡。最后,想到了adjusting the aspect ratio,但它似乎只与图的内容有关。

我目前正在使用matplotlib 2.2.2和 您可以使用以下代码(original)复制上面的图形:

import numpy as np
import matplotlib.pyplot as plt

N = 5
menMeans = (20, 35, 30, 35, 27)
womenMeans = (25, 32, 34, 20, 25)
menStd = (2, 3, 4, 1, 2)
womenStd = (3, 5, 2, 3, 3)
ind = np.arange(N)    # the x locations for the groups
width = 0.35       # the width of the bars: can also be len(x) sequence

# plt.figure(figsize=(500,20))

p1 = plt.bar(ind, menMeans, width, yerr=menStd)
p2 = plt.bar(ind, womenMeans, width,
             bottom=menMeans, yerr=womenStd)

plt.ylabel('Scores')
plt.title('Scores by group and gender')
# plt.xticks(ind, ('G1', 'G2', 'G3', 'G4', 'G5'))
plt.yticks(np.arange(0, 81, 10))
plt.legend((p1[0], p2[0]), ('Men', 'Women'))

plt.xticks(ind, ('It shows up perfectly fine in Jupyter Notebook', 'how can I adjust "some setting" so that I can see all these?', 'G3', 'G4', 'G5'))
plt.tick_params(labelrotation=90)
# plt.savefig('Example.jpeg')

# plt.tight_layout()

plt.show()

1 个答案:

答案 0 :(得分:0)

您可以使用

plt.subplots_adjust(bottom=0.3)

在情节下获得更多空间。默认值为0.1。

请注意,使用默认的图形大小,我无法增加空间,以使完整(很长)的文本可见。如果您定义图形尺寸,则应该可以。