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

gnuplot技术问询:如何将整数数据点绘制成填充单位方格

渗流集群可视化:整数点转单位正方形的实现

要把整数坐标的渗流点转换成对应区间的正方形,核心就是明确点到正方形的映射规则,然后用绘图工具批量渲染这些图形就行。

核心映射规则

每个整数点(x, y)对应的正方形,其实就是以(x-1, y-1)为左下角顶点、边长为1的正方形:

  • 点(1,1) → 覆盖x∈[0,1]、y∈[0,1]的区域
  • 点(2,3) → 覆盖x∈[1,2]、y∈[2,3]的区域

这个规则刚好匹配方格点阵渗流的可视化需求——每个站点对应一个单位方格,完美还原渗流集群的空间分布。

具体代码示例(Python + Matplotlib)

假设你已经有了渗流集群的整数点集合,用Matplotlib可以快速实现这种可视化:

import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle

# 示例渗流集群点集,替换成你的实际数据
cluster_points = [(1,1), (2,3), (2,2), (3,3), (3,2), (4,2)]

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

# 遍历每个点,绘制对应的正方形
for x_int, y_int in cluster_points:
    # 计算正方形左下角坐标:(x_int-1, y_int-1),宽高都是1
    square = Rectangle((x_int-1, y_int-1), 1, 1, 
                       facecolor='#1f77b4', edgecolor='black', alpha=0.7)
    ax.add_patch(square)

# 调整坐标轴,让所有正方形都显示完整
min_x = min(p[0] for p in cluster_points) - 1
max_x = max(p[0] for p in cluster_points)
min_y = min(p[1] for p in cluster_points) - 1
max_y = max(p[1] for p in cluster_points)

ax.set_xlim(min_x - 0.3, max_x + 0.3)
ax.set_ylim(min_y - 0.3, max_y + 0.3)
ax.set_aspect('equal')  # 强制正方形比例,避免拉伸
plt.grid(True, linestyle='--', alpha=0.5)
plt.title('渗流集群可视化(整数点转单位正方形)')
plt.show()

额外提示

  • 如果是键渗流(需要展示站点间的连接),可以在相邻正方形之间添加线段,比如当两个点(x1,y1)和(x2,y2)相邻时,绘制对应边的连接线
  • 可以通过调整facecolor、alpha等参数区分不同集群,或者标记出渗流路径
  • 如果数据量很大(比如大规模渗流模拟),可以考虑用更高效的绘图方式(比如直接绘制填充的多边形集合)来提升性能

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:13:06