Estou enfrentando um problema ao desenhar bordas triangulares usando Matplotlib em Python. Quero criar um padrão específico, mas estou encontrando um comportamento inesperado. Preciso de ajuda para identificar e resolver o problema.
este é o meu código
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()
mas estou recebendo esta imagem, como você pode ver,
Na esquina, linhas extras estão chegando, conforme eu as contornei. Não quero essa linha extra, tentei resolver usando loop, embora uma linha extra continue permanecendo
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() gentilmente resolva o problema
As linhas que você deseja excluir pertencem aos triângulos gerados na primeira (i = 1, j = 0) e na última (i = N, J = N - 1) iterações dos
for
loops aninhados:Seu método inteligente desenha triângulos abertos, e você diz que as últimas colunas mais à direita dos triângulos abertos têm lados demais...
Tenho outro método inteligente para desenhar uma "pirâmide de quadrados", pois é isso que você parece querer.