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

如何在Python中绘制每条边颜色不同的网格?

Python绘制各边颜色不同的网格方案

问题1:能否通过grid函数访问特定边?

matplotlib的grid()函数是批量生成网格线的工具,它不会将每条边作为独立的可操作对象暴露出来,也没有官方定义的边索引规则,无法直接通过grid函数单独修改某条边的颜色,所以这个实现思路不可行。

问题2:能否手动绘制线段并在同一图中展示?

完全可以,这也是最贴合你参考的TikZ思路的实现方式,用matplotlib就能轻松搞定。核心逻辑就是像TikZ那样,通过双层循环遍历所有水平和垂直边,逐个绘制并设置颜色。

示例代码

import matplotlib.pyplot as plt
import random

# 定义网格规模:n列m行,对应(n+1)个x坐标、(m+1)个y坐标
grid_cols = 3
grid_rows = 2

plt.figure(figsize=(6, 4))
ax = plt.gca()

# 绘制所有水平边:(x, y) → (x+1, y)
for y in range(grid_rows + 1):
    for x in range(grid_cols):
        # 随机生成RGB颜色(也可以用预定义的颜色列表)
        edge_color = (random.random(), random.random(), random.random())
        ax.plot([x, x+1], [y, y], color=edge_color, linewidth=2)

# 绘制所有垂直边:(x, y) → (x, y+1)
for x in range(grid_cols + 1):
    for y in range(grid_rows):
        edge_color = (random.random(), random.random(), random.random())
        ax.plot([x, x], [y, y+1], color=edge_color, linewidth=2)

# 调整坐标轴,让网格对齐显示
ax.set_xlim(-0.1, grid_cols + 0.1)
ax.set_ylim(-0.1, grid_rows + 0.1)
ax.set_xticks(range(grid_cols + 1))
ax.set_yticks(range(grid_rows + 1))
plt.grid(False)  # 关闭默认网格,避免重叠
plt.show()

代码说明

  • 代码分为水平边和垂直边两个循环,和你参考的TikZ逻辑完全对应;
  • 每条边的颜色可以随机生成,也可以替换成你预定义的颜色列表,实现更精准的颜色控制;
  • 关闭默认的grid()是为了避免和手动绘制的边重叠,保证显示效果。

内容的提问来源于stack exchange,提问作者Gâteau-Gallois

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:26:14