蟒Matplotlib数字标题使用twiny当重叠轴标签(Python Matplotlib fig

2019-06-18 10:53发布

我试图使用twiny如下相同图形绘制两个单独的量:

fig = figure()
ax = fig.add_subplot(111)
ax.plot(T, r, 'b-', T, R, 'r-', T, r_geo, 'g-')
ax.set_yscale('log')
ax.annotate('Approx. sea level', xy=(Planet.T_day*1.3,(Planet.R)/1000), xytext=(Planet.T_day*1.3, Planet.R/1000))
ax.annotate('Geostat. orbit', xy=(Planet.T_day*1.3, r_geo[0]), xytext=(Planet.T_day*1.3, r_geo[0]))
ax.set_xlabel('Rotational period (hrs)')
ax.set_ylabel('Orbital radius (km), logarithmic')
ax.set_title('Orbital charts for ' + Planet.N, horizontalalignment='center', verticalalignment='top')


ax2 = ax.twiny()
ax2.plot(v,r,'k-')
ax2.set_xlabel('Linear speed (ms-1)')

show()

且数据呈现细,但我有这个数字标题与次级x轴的轴标签重叠,使得它难以辨认的问题(我想在这里张贴图片的例子,但我没有足够高的声望还)。

我想知道,如果有,只是直接转移标题了几十像素,使图表看起来更漂亮的简单方法。

Answer 1:

我不知道它是否在以后的版本matplotlib的一项新功能,但至少为1.3.1,这很简单:

plt.title(figure_title, y=1.08)

这也适用于plt.suptitle()但(还)没有对plt.xlabel()等。



Answer 2:

忘记使用plt.title和文本直接放在与plt.text 。 过夸张的例子给出如下:

import pylab as plt

fig = plt.figure(figsize=(5,10))

figure_title = "Normal title"
ax1  = plt.subplot(1,2,1)

plt.title(figure_title, fontsize = 20)
plt.plot([1,2,3],[1,4,9])

figure_title = "Raised title"
ax2  = plt.subplot(1,2,2)

plt.text(0.5, 1.08, figure_title,
         horizontalalignment='center',
         fontsize=20,
         transform = ax2.transAxes)
plt.plot([1,2,3],[1,4,9])

plt.show()



Answer 3:

ax.set_title('My Title\n', fontsize="15", color="red")
plt.imshow(myfile, origin="upper")

如果你把'\n'你的标题字符串之后,该地块标题下方绘制。 这可能是一个快速的解决方案了。



Answer 4:

我有与X标签重叠的插曲标题的问题; 这个工作对我来说:

import matplotlib.pyplot as plt
fig, ax = plt.subplots(2, 1)
ax[0].scatter(...)
ax[1].scatter(...)
plt.tight_layout()
.
.
.
plt.show()

之前

参考:

  • https://matplotlib.org/users/tight_layout_guide.html


Answer 5:

只要使用plt.tight_layout()之前plt.show() 它工作得很好。



文章来源: Python Matplotlib figure title overlaps axes label when using twiny