我有一个包含3列的数据集:DEPTH
,TVD_SCS_interp
,Gamma_ray
。我想创建一个深度图(在左y轴上),TVD_SCS_interp(右侧y轴)与Gamma_ray(x轴)。我尝试绘制TVD_SCS与Gamma_ray和DEPTH与Gamma_ray的关系图,以确保刻度的位置是否正确(由于Gamma_ray值相同,我预期线会彼此重叠),但DEPTH与相应TVD_SCS_interp值的对齐不一致,如下图所示。
下面是我的代码:
DEPTH = df.DEPTH
TVD_SCS_interp = df.TVD_SCS_interp
GAMMA_RAY = df.GR_N
# Create an array for the x-axis
x = np.array(GAMMA_RAY)
# Create a figure and two axes
fig = plt.figure(figsize=(8, 165))
gs = gridspec.GridSpec(1, 1, width_ratios=[0.4])
# Create subplots within the custom grid
ax1 = plt.subplot(gs[0])
# Create a second y-axis on the right side
ax2 = ax1.twinx()
# Plot 'DEPTH' data on the left y-axis
ax1.plot(x, DEPTH, color='b', label='DEPTH')
ax1.set_ylabel('DEPTH', color='b')
ax1.set_ylim(2180, 4076.5)
# Plot 'DEPTH_TRU' data on the right y-axis
ax2.plot(x, TVD_SCS_interp, color='r', label='TVD_SCS_interp')
ax2.set_ylabel('DEPTH_TRU', color='r')
top = df.loc[df['DEPTH'] == 2180, 'TVD_SCS_interp'].values[0]
bottom = df.loc[df['DEPTH'] == 4076.5, 'TVD_SCS_interp'].values[0]
ax2.set_ylim(top,bottom)
ax2.yaxis.set_major_locator(ticker.MultipleLocator(10))
ax2.yaxis.set_minor_locator(ticker.MultipleLocator(1))
ax1.yaxis.set_major_locator(ticker.MultipleLocator(10))
ax1.yaxis.set_minor_locator(ticker.MultipleLocator(1))
# Set labels and title
ax1.set_xlabel('GAMMA_RAY')
ax1.set_title('Two Y-Axes Plot')
# Show legend
ax1.legend(loc='upper left')
ax2.legend(loc='upper right')
# Display the plot
plt.show()
如何创建具有第二个y轴的图,其刻度标签与第一个y轴相关?
以下是一些样本数据:
{
"DEPTH": [4398.1, 4398.2, 4398.3, 4398.4, 4398.5, 4398.6, 4398.7],
"TVD_SCS_interp": [
4200.23,
4200.98,
4201.4,
4202.12,
4202.89,
4203.3,
4204.21,
],
"Gamma_ray": [150, 155, 161, 145, 165, 137, 153],
}
1条答案
按热度按时间0g0grzrc1#
使用regression来估计双等维轴之间的最佳拟合关系(例如,两个
y
轴)→显示 * 对齐的 * 二元数据,相对于共享的相同自变量(
x
)例如,下面我根据您提供的样本数据生成了一个粗略的外推扩展-其中y维中的两个单调增加的变量在x维中共享相同的值,但在x维中共享不同的尺度和变化率,因此需要进行估计(即回归分析)以最佳地划分和分配它们的tick值,以确保两个数据的对齐。𝒙
结果: