You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Matplotlib绘制井深区间对应参数的垂直柱状图?

绘制井深区间参数的2D图表

方案1:水平条形图(符合测井图常规展示)

这种方式将深度作为y轴(从上到下数值递增),参数值作为条形长度,每个条形刚好覆盖对应的深度区间:

import pandas as pd
import matplotlib.pyplot as plt

# 加载数据集
df = pd.DataFrame(
    {
        "depth in": [1000, 1020, 1040],
        "depth out": [1020, 1040, 1060],
        "Parameter": [10, 15, 5],
    }
)

# 计算深度区间长度和区间中点
df['depth_interval'] = df['depth out'] - df['depth in']
df['depth_midpoint'] = (df['depth in'] + df['depth out']) / 2

# 创建绘图对象
fig, ax = plt.subplots(figsize=(8, 6))

# 绘制水平条形:y轴为区间中点,条形高度为区间长度,宽度为参数值
ax.barh(df['depth_midpoint'], df['Parameter'], height=df['depth_interval'], align='center', color='steelblue')

# 反转y轴,让深度数值越大的区间越靠下(符合测井图习惯)
ax.invert_yaxis()

# 设置坐标轴标签和标题
ax.set_xlabel('参数值')
ax.set_ylabel('深度')
ax.set_title('井深区间参数分布')

# 自动调整布局,避免标签被截断
plt.tight_layout()
plt.show()

方案2:垂直柱状条(按需求实现)

如果需要垂直方向的柱状条,让每个柱子的水平范围覆盖深度区间,高度对应参数值:

import pandas as pd
import matplotlib.pyplot as plt

# 加载数据集
df = pd.DataFrame(
    {
        "depth in": [1000, 1020, 1040],
        "depth out": [1020, 1040, 1060],
        "Parameter": [10, 15, 5],
    }
)

# 计算深度区间长度和区间中点
df['depth_interval'] = df['depth out'] - df['depth in']
df['depth_midpoint'] = (df['depth in'] + df['depth out']) / 2

# 创建绘图对象
fig, ax = plt.subplots(figsize=(8, 6))

# 绘制垂直柱状:x轴为区间中点,柱子宽度为区间长度,高度为参数值
ax.bar(df['depth_midpoint'], df['Parameter'], width=df['depth_interval'], align='center', color='coral')

# 设置坐标轴标签和标题
ax.set_xlabel('深度')
ax.set_ylabel('参数值')
ax.set_title('井深区间参数分布')

# 自动调整布局
plt.tight_layout()
plt.show()

常见坐标轴问题解决

  • 如果使用水平条形图,必须反转y轴,否则深度数值大的区间会出现在顶部,不符合常规认知。
  • 确保条形的height(水平条形)或width(垂直条形)设置为深度区间的长度,这样柱子才能精准覆盖depth in到depth out的范围。
  • 用区间中点作为条形的定位基准,能保证柱子居中在对应深度区间内。

内容的提问来源于stack exchange,提问作者Denis Pro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 23:38:27