如何解决Matplotlib 子图太短
我正在尝试渲染带有子图的图。每个子图都被垂直压缩,我不明白为什么。我试过设置纵横比,但这似乎使它更窄,没有解决图像不够高而无法使用的问题。我正在使用 tight_layout
但输出大小足以让它更大。我知道我可以使用网格布局更具体地设置图像的大小,但我觉得我缺少一些更简单的东西,因为这对我的任何带有子图的类似图都没有问题。
谢谢!
def plot_at_all_intervals_mod(series,series_name,series_file_name,is_date,write,ROLL_NUM = 4):
plt.close()
fig,axs = plt.subplots(4,2)
# for row in axs:
# for ax in row:
# ax.set_aspect('equal')
#absolute
if is_date:
my_range = (unix_time_to_year(min(series)),unix_time_to_year(max(series)))
values,bins,_ = axs[0,0].hist(unix_time_to_year(series),log=False,bins=200,range=my_range)
else:
my_range = (min(series) / SECONDS_IN_A_YEAR,max(series) / SECONDS_IN_A_YEAR)
values,0].hist(series / SECONDS_IN_A_YEAR,range=my_range)
bins = bins.tolist()[:-1]
values = circular_moving_average(values.tolist(),ROLL_NUM)
axs[0,0].plot(bins,values)
axs[0,0].set_xlabel('Absolute Time')
axs[0,0].set_ylabel('Number of Logs')
axs[0,0].set_title(f'distribution of {series_name} \nOver Time')
#year
values,1].hist(unix_time_to_day_of_year(series),bins=365*24)
bins = bins.tolist()[:-1 ]
values = circular_moving_average(values.tolist(),1].plot(bins,1].set_xlabel('Day of Year (Starting Jan 1st)')
axs[0,1].set_ylabel('Number of Logs')
axs[0,1].set_title(f'distribution of {series_name} \nModulo Year')
#week
values,_ = axs[1,0].hist(unix_time_to_day_of_week(series),bins=7*24*60)
bins = bins.tolist()[:-1]
values = circular_moving_average(values.tolist(),ROLL_NUM)
axs[1,values)
axs[1,0].set_xlabel('Day of Week (Starting at 0=Monday)')
axs[1,0].set_ylabel('Number of Logs')
axs[1,0].set_title(f'distribution of {series_name} \nOver Time Modulo Week')
#day
values,1].hist(unix_time_to_time_of_day(series),bins=24*60)
bins = bins.tolist()[:-1 * ROLL_NUM]
values = moving_average(values.tolist(),1].set_xlabel('Hour of Day')
axs[1,1].set_ylabel('Number of Logs')
axs[1,1].set_title(f'distribution of {series_name} \nOver Time Modulo Day')
#hour
values,_ = axs[2,0].hist(unix_time_to_minute_in_hour(series),bins=60*60)
bins = bins.tolist()[:-1]
values = circular_moving_average(values.tolist(),ROLL_NUM)
axs[2,values)
axs[2,0].set_xlabel('Minute of Hour')
axs[2,0].set_ylabel('Number of Logs')
axs[2,0].set_title(f'distribution of {series_name} \nOver Time Modulo Hour')
#10 minutes
values,1].hist(unix_time_to_minute_in_hour(series),1].set_xlabel('Minute of Hour')
axs[2,1].set_ylabel('Number of Logs')
axs[2,1].set_title(f'distribution of {series_name} \nOver Time Modulo Hour')
#minute
ROLL_NUM = 1
values,_ = axs[3,0].hist(unix_time_to_second_in_minute(series),bins=60)
bins = bins.tolist()[:-1 * ROLL_NUM]
values = moving_average(values.tolist(),ROLL_NUM)
axs[3,values)
axs[3,0].set_xlabel('Second of Minute')
axs[3,0].set_ylabel('Number of Logs')
axs[3,0].set_title(f'distribution of {series_name} \n Over Time Modulo Minute')
fig.suptitle(f'distribution of {series_name} Over Different Periods',fontsize=16)
fig.tight_layout()
fig.set_size_inches(20,20)
fig.show()
if write:
fig.savefig(f'all-times-{series_file_name}.png')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。