保存图形以具有相同的大小,与 x 刻度、标签无关
Save figures to have the same size independet of x ticks, ylabels
我正在尝试创建一些图表以供发布。当我将它们插入乳胶时,它们排列不整齐。本质上是因为 x 刻度和标签不同,它们最终看起来像这样:
我用来保存这些数字的代码如下:
size_f = 20
#### Set labels ####
ax.set_ylabel(r'$W_{kin} \ [eV]$', fontsize=size_f)
ax.set_xlabel(r'$Time \ [sec]$', fontsize=size_f)
#### Set fig dimensions ####
plt.rcParams["figure.figsize"] = [10,8]
#### Set tick size ####
ax.tick_params(axis='x',labelsize=size_f)
ax.tick_params(axis='y',labelsize=size_f)
#### Save figure ####
fig.savefig(r'C:\Users\nikos.000\vlahos\png\Dw_UCS.png', format='png',dpi=300,bbox_inches='tight')
我怎样才能使方框具有相同的大小,以便图形更好地排列,而不受轴刻度和标签的影响。
使用matplotlib.pyplot.subplots可以在同一图像中整齐地绘制多个绘图。
我强烈推荐你使用matplotlib.pyplot.subplots。您可以调整每个子图的特征,而不会扰乱整体外观。我添加代码供您使用您的项目。
import matplotlib.pyplot as plt
x = range(10)
y = range(10)
size_f = 12
labels = ("(a)", "(b)", "(c)", "(d)")
fig, ax = plt.subplots(2, 2, figsize=(10, 8))
ax[0, 0].plot(x, y, 'r')
ax[0, 0].text(-0.1, 1., labels[0], transform=ax[0, 0].transAxes, fontsize=15, fontweight='normal', va='top', ha='right')
ax[0, 1].plot(x, y, 'b')
ax[0, 1].text(-0.1, 1., labels[1], transform=ax[0, 1].transAxes, fontsize=15, fontweight='normal', va='top', ha='right')
ax[1, 0].plot(x, y, 'g')
ax[1, 0].text(-0.1, 1., labels[2], transform=ax[1, 0].transAxes, fontsize=15, fontweight='normal', va='top', ha='right')
ax[1, 1].plot(x, y, 'k')
ax[1, 1].text(-0.1, 1., labels[3], transform=ax[1, 1].transAxes, fontsize=15, fontweight='normal', va='top', ha='right')
for row in range(2):
for col in range(2):
ax[row, col].set_ylabel(r'$W_{kin} \ [eV]$', fontsize=size_f)
ax[row, col].set_xlabel(r'$Time \ [sec]$', fontsize=size_f)
fig.subplots_adjust(wspace=0.3)
fig.subplots_adjust(hspace=0.3)
fig.savefig(r'C:\Users\nikos.000\vlahos\png\Dw_UCS.png', format='png',dpi=300,bbox_inches='tight')
图:
由于每个子图都有共同和独立的特征,所以我没有将所有内容都放入 for-blocks
。
我正在尝试创建一些图表以供发布。当我将它们插入乳胶时,它们排列不整齐。本质上是因为 x 刻度和标签不同,它们最终看起来像这样:
我用来保存这些数字的代码如下:
size_f = 20
#### Set labels ####
ax.set_ylabel(r'$W_{kin} \ [eV]$', fontsize=size_f)
ax.set_xlabel(r'$Time \ [sec]$', fontsize=size_f)
#### Set fig dimensions ####
plt.rcParams["figure.figsize"] = [10,8]
#### Set tick size ####
ax.tick_params(axis='x',labelsize=size_f)
ax.tick_params(axis='y',labelsize=size_f)
#### Save figure ####
fig.savefig(r'C:\Users\nikos.000\vlahos\png\Dw_UCS.png', format='png',dpi=300,bbox_inches='tight')
我怎样才能使方框具有相同的大小,以便图形更好地排列,而不受轴刻度和标签的影响。
使用matplotlib.pyplot.subplots可以在同一图像中整齐地绘制多个绘图。
我强烈推荐你使用matplotlib.pyplot.subplots。您可以调整每个子图的特征,而不会扰乱整体外观。我添加代码供您使用您的项目。
import matplotlib.pyplot as plt
x = range(10)
y = range(10)
size_f = 12
labels = ("(a)", "(b)", "(c)", "(d)")
fig, ax = plt.subplots(2, 2, figsize=(10, 8))
ax[0, 0].plot(x, y, 'r')
ax[0, 0].text(-0.1, 1., labels[0], transform=ax[0, 0].transAxes, fontsize=15, fontweight='normal', va='top', ha='right')
ax[0, 1].plot(x, y, 'b')
ax[0, 1].text(-0.1, 1., labels[1], transform=ax[0, 1].transAxes, fontsize=15, fontweight='normal', va='top', ha='right')
ax[1, 0].plot(x, y, 'g')
ax[1, 0].text(-0.1, 1., labels[2], transform=ax[1, 0].transAxes, fontsize=15, fontweight='normal', va='top', ha='right')
ax[1, 1].plot(x, y, 'k')
ax[1, 1].text(-0.1, 1., labels[3], transform=ax[1, 1].transAxes, fontsize=15, fontweight='normal', va='top', ha='right')
for row in range(2):
for col in range(2):
ax[row, col].set_ylabel(r'$W_{kin} \ [eV]$', fontsize=size_f)
ax[row, col].set_xlabel(r'$Time \ [sec]$', fontsize=size_f)
fig.subplots_adjust(wspace=0.3)
fig.subplots_adjust(hspace=0.3)
fig.savefig(r'C:\Users\nikos.000\vlahos\png\Dw_UCS.png', format='png',dpi=300,bbox_inches='tight')
图:
由于每个子图都有共同和独立的特征,所以我没有将所有内容都放入 for-blocks
。