python - Matplotlib 相邻图
问题描述
我编写了一个 Python 库,它使用 Matplotlib 和 Astropy 从太阳无线电发射数据生成光谱。我对它从单个 FITS 文件中绘制数据的方式感到满意,但现在我正尝试在单个图中相邻地绘制来自多个 FITS 文件的数据。我已经阅读了一些 Matplotlib 的文档和一些与此相关的问题,例如如何在 matplotlib 中获取多个子图?.
下面是从单个 FITS 文件中绘制数据的部分代码:
def plot_freq_range_db_above_background(self, start_freq, end_freq):
plt.figure(1, figsize=(11, 6))
plt.imshow(self.hdul_dataset['db'] - self.hdul_dataset['db_median'],
cmap='magma', norm=plt.Normalize(self.hdul_dataset['v_min'],
self.hdul_dataset['v_max']
),
aspect='auto', extent=[self.hdul_dataset['time_axis'][0],
self.hdul_dataset['time_axis']
[-1000],
self.hdul_dataset['frequency'][-1],
self.hdul_dataset['frequency'][0]])
plt.ylim(start_freq, end)
plt.gca().invert_yaxis()
plt.colorbar(label='dB above background')
plt.xlabel('Time (UT)', fontsize=15)
plt.ylabel('Frequency (MHz)', fontsize=15)
plt.title(self.filename, fontsize=16)
plt.tick_params(labelsize=14)
plt.show()
所以,我现在要做的是绘制来自不同文件的数据,并将它们全部在一个图中彼此相邻。每个图的 X 轴(频率)都相同,Y 轴(时间)从一个文件到下一个文件是连续的。
这是我写的试图完成我刚才描述的方法:
def plot_fits_files_list(files_list, start_freq, end_freq):
dim = len(files_list)
plt_index = 1
plt.figure(1)
for file in files_list:
fits_filename = file.split(os.sep)[-1]
fitsfile = ECallistoFitsFile(fits_filename)
fitsfile.set_file_path()
fitsfile.set_hdul_dataset()
plt.subplot(dim, dim, plt_index)
plt_index += 1
plt.imshow(
fitsfile.hdul_dataset['db'] -
fitsfile.hdul_dataset['db_median'],
cmap='magma',
norm=plt.Normalize(fitsfile.hdul_dataset['v_min'],
fitsfile.hdul_dataset['v_max']),
aspect='auto', extent=[fitsfile.hdul_dataset['time_axis'][0],
fitsfile.hdul_dataset['time_axis']
[-1000],
fitsfile.hdul_dataset['frequency'][-1],
fitsfile.hdul_dataset['frequency'][0]])
plt.ylim(start_freq, end_freq)
plt.gca().invert_yaxis()
plt.colorbar(label='dB above background')
plt.xlabel('Time (UT)', fontsize=15)
plt.ylabel('Frequency (MHz)', fontsize=15)
plt.title("Multiple Plots Test", fontsize=16)
plt.tick_params(labelsize=14)
plt.show()
解决方案
推荐阅读
- javascript - javascript 从正则表达式中删除 g
- ldap - Freeradius 和 Google LDAP
- artifactory - 如何将 Jfrog Artifactory pro 升级到企业或企业+?
- forms - 如何防止提交按钮使用 Foundation 6.6 和 Abide 提交表单
- here-api - 使用 HERE 在迪拜导航
- c# - 如何在 Awake 和 Editor 脚本中获得门?
- java - 在 Apache Karaf 上使用 Shiro 保护 CXF 休息服务
- twilio - 是否可以将 SMS 消息移动到 Twilio 中的消息队列前面?
- ios - UICollectionViewCell 将 indexpath.item 传递给列表
- javascript - 如何在 ReactJS 的 Promise 中解析 useReducer 的调度函数