我遇到了一个问题,如何在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()

but I am getting this image, as u can see, enter image description here

在拐角处,当我包围它的时候,额外的队伍来了.我不想要这额外的一行,我试着用循环来解决它,即使额外的一行可以保持不变

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() 请妥善解决这个问题

推荐答案

要删除的行属于嵌套的for个循环的第一次(i=1,j=0)和最后一次(i=N,J=N-1)迭代中生成的三角形:

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[:, 1].reshape(N + 1, N + 1)
Y = A[:, 0].reshape(N + 1, N + 1)

for i in range(1, N + 1):
    for j in range(i):
        if i == 1: # Lower right triangle
            line_x = np.array([X[i, j + 1], X[i, j]])
            line_y = np.array([Y[i, j + 1], Y[i, j]])
        elif j == N - 1: # Upper right triangle
            line_x = np.array([X[i, j], X[i - 1, j]])
            line_y = np.array([Y[i, j], Y[i - 1, j]])
        else:
            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_x, line_y,  color='black', linewidth=1)

plt.show()

enter image description here

Python相关问答推荐

跳过包含某些键的字典

将列中的滚动值集转换为单元格中的单个值

有没有办法清除气流中的僵尸

在for循环中保存和删除收件箱

如何使用scikit-learn Python库中的Agglomerative集群算法以及集群中声明的对象数量?

使用Python Cerberus初始化一个循环数据 struct (例如树)(v1.3.5)

如何在Python中使用ijson解析SON期间检索文件位置?

从DataFrame.apply创建DataFrame

在函数内部使用eval(),将函数的输入作为字符串的一部分

理解Python的二分库:澄清bisect_left的使用

如何计算两极打印机中 * 所有列 * 的出现次数?

Select 用a和i标签包裹的复选框?

删除所有列值,但判断是否存在任何二元组

从numpy数组和参数创建收件箱

pandas滚动和窗口中有效观察的最大数量

使用groupby Pandas的一些操作

无法定位元素错误404

如何请求使用Python将文件下载到带有登录名的门户网站?

将输入聚合到统一词典中

在Python中使用if else或使用regex将二进制数据如111转换为001""