我在 Python 中使用 Matplotlib 绘制三角形边框时遇到问题。我想创建一个特定的模式,但遇到了意外的行为。我需要帮助来识别和解决问题。
这是我的代码
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)
# I have defined a triangle
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):
for j in range(i):
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()
在拐角处,额外的线即将到来,因为我包围了它。我不想要这条额外的线,我尝试使用循环来解决它,尽管一条额外的线将保留
for i in range(6):
if i == N-1 :
for j in range(i-1):
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)
pass
else:
for j in range(i):
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)
pass
plt.show() 请解决问题
您要删除的行属于嵌套循环的第一次 (i = 1, j = 0) 和最后一次 (i = N, J = N - 1) 迭代中生成的三角形
for
:你聪明的方法画了空心三角形,你说空心三角形的最后一列、最右边的列有太多边......
我有另一种巧妙的方法来绘制“正方形金字塔”,因为这似乎就是您想要的。