Matplotlib绘制三角形边框出现多余线条问题求助
解决Matplotlib绘制三角形图案时角落出现多余线条的问题
问题根源在于初始循环中,当i=N(最后一行)时,j的取值范围覆盖到了N-1,导致绘制的线条超出预期的三角形区域,从而在角落产生多余线条。你之前的修复仅处理了i=N-1的情况,未对i=N的边界进行控制。
修复方案
调整循环中j的取值范围,针对最后一行(i=N)限制j的上限,避免绘制越界线条:
import numpy as np import matplotlib.pyplot as plt N = 5 A = np.array([(x, y) for y in range(N, -1, -1) for x in range(N + 1)]) t = np.array([[1, 1], [-1, 1]]) A = np.dot(A, t) fig = plt.figure(figsize=(10, 10)) triangle = fig.add_subplot(111) X = A[:, 0].reshape(N + 1, N + 1) Y = A[:, 1].reshape(N + 1, N + 1) for i in range(1, N + 1): # 最后一行时,j最多循环到N-2,避免越界 j_range = range(i) if i < N else range(N - 1) for j in j_range: line_x = np.array([X[i, j + 1], X[i, j], X[i - 1, j]]) line_y = np.array([Y[i, j + 1], Y[i, j], Y[i - 1, j]]) triangle.plot(line_y, line_x, color='black', linewidth=1) plt.show()
代码说明
- 通过
j_range动态控制每个i对应的j循环范围:当i不是最后一行时,保持原范围range(i);当i=N时,将范围缩小为range(N-1),即j从0到N-2。 - 这个调整会阻止绘制最后一行最右侧的那条越界线条,彻底消除角落的多余线条。
内容的提问来源于stack exchange,提问作者Umar
相关产品推荐
相关产品推荐

