使用下面的数据集,它表示随时间变化的深度记录的振幅。
data = {
'Time': [0, 2.5, 5, 7.5, 10],
'Depth_63.5': [161, 143, 134, 147, 163],
'Depth_64.5': [183, 190, 375, 255, 241],
'Depth_65.5': [711, 727, 914, 756, 747],
}
我可以绘制时间与振幅的曲线图,如下所示。
然而,我想要的是我在父图形上绘制的图形,X轴为时间,Y轴为深度,如下图所示。
我如何实现这个结果?我目前的代码如下所示...
import matplotlib.pyplot as plt
import pandas as pd
# Sample data..
data = {
'Time': [0, 2.5, 5, 7.5, 10],
'Depth_63.5': [161, 143, 134, 147, 163],
'Depth_64.5': [183, 190, 375, 255, 241],
'Depth_65.5': [711, 727, 914, 756, 747],
}
# Convert data to a DataFrame
df = pd.DataFrame(data)
# Extract depth levels from column names
depth_levels = [col.split('_')[1] for col in df.columns if 'Depth_' in col]
# Create the parent figure with subplots
fig, ax = plt.subplots(figsize=(10, 6))
# Loop through each depth level and plot Time vs Amplitude on the same axes
for depth_level in depth_levels:
ax.plot(df['Time'], df[f'Depth_{depth_level}'], label=f'Depth {depth_level}')
# Customize the plot appearance
ax.set_title('Depth vs Time vs Amplitude')
ax.set_xlabel('Time (us)')
ax.set_ylabel('Depth Levels')
ax.legend()
ax.grid(True)
# Show the parent figure
plt.show()
我认为解决方案将是接近多个Y轴,但辅助Y轴将依赖于主Y轴。
2条答案
按热度按时间kx7yvsdv1#
看起来你正在寻找 * 次要情节 *:
输出量:
vyu0f0g12#
我使用matplotlib 'GridSpec'模块解决了这个问题,所以确保它像这样导入:
import matplotlib.gridspec as gridspec
GridSpec额外控制子图的位置,以及各个子图之间的边距和间距。它还允许我们创建可以分布在多个网格区域的轴。
我创建了一个GridSpec,其行数等于我的网格的长度,列数等于1。在该GridSpec上,我绘制了深度与时间,同时将线条样式设置为无,以防止它显示在图上(这是我想要的情节的轴,而不是情节本身).然后我添加了一个
add_subplot
到gridspec和plot,然后从上面的问题中绘制相应的深度级别。最终代码如下:
您可以自定义轴和网格到你想要的。