我在matplotlib中有一个图表,我的问题是当调整窗口大小时,由于x轴的值是字符串,它们会重叠在一起,无法清晰地读取。
类似的情况也发生在图例中,如果窗口大小被调整,它不会随之调整大小。
是否有相关设置可以解决这个问题?
类似的情况也发生在图例中,如果窗口大小被调整,它不会随之调整大小。
是否有相关设置可以解决这个问题?
不完全准确。(不过,可以看看新的matplotlib.pyplot.tight_layout()
函数,它有点类似...)
然而,通常处理长x轴刻度标签的技巧就是将它们旋转。
例如,如果我们有一些重叠的xticklabels:
import matplotlib.pyplot as plt
plt.plot(range(10))
labels = [15 * repr(i) for i in range(10)]
plt.xticks(range(10), labels)
plt.show()
rotation=30
。调用 plt.tight_layout()
只是调整绘图的底部边缘,以便标签不会超出底部边缘。)import matplotlib.pyplot as plt
plt.plot(range(10))
labels = [10 * repr(i) for i in range(10)]
plt.xticks(range(10), labels, rotation=30)
plt.tight_layout()
plt.show()
默认情况下,刻度标签位于刻度线中心。对于旋转的刻度线,将标签的左侧或右侧边缘与刻度线对齐通常更合理。
例如,类似于这样的情况(右侧,正旋转):
import matplotlib.pyplot as plt
plt.plot(range(10))
labels = [10 * repr(i) for i in range(10)]
plt.xticks(range(10), labels, rotation=30, ha='right')
plt.tight_layout()
plt.show()
或者这样(左侧,负旋转):
import matplotlib.pyplot as plt
plt.plot(range(10))
labels = [10 * repr(i) for i in range(10)]
plt.xticks(range(10), labels, rotation=-30, ha='left')
plt.tight_layout()
plt.show()
a.axis('off')
只会删除数字,而a.margins(0, tight=True)
似乎无效...帮帮我! - yPhilax.margins
控制的是数据限制的自动缩放,而不是图形的“外部”边距。如果您想要控制轴占用画布的大小,可以手动创建一个占据整个图形的轴,使用ax = fig.add_axes([0, 0, 1, 1])
,或者使用subplots_adjust
来更改子图的“外部”边距(例如fig.subplots_adjust(0, 0, 1, 1)
)。 - Joe Kington