Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python图形可视化稀疏矩阵_Python_Python 3.x_Sparse Matrix_Turtle Graphics - Fatal编程技术网

使用Python图形可视化稀疏矩阵

使用Python图形可视化稀疏矩阵,python,python-3.x,sparse-matrix,turtle-graphics,Python,Python 3.x,Sparse Matrix,Turtle Graphics,我被这个问题困住了 def showMatrix(turtle_object, sparse_matrix): showMatrix()函数将使用点阵可视化矩阵内容。每个网格位置将对应于单个矩阵位置(行、列)。“点”的存在表示非零条目 首先,需要使用 screen.setworldcoordinates()方法。换句话说,显示屏的左下角将显示 变为坐标(0,0),右上角变为(行-1,列-1)。改变屏幕 通过匹配“网格”,坐标以这种方式简化了矩阵索引到屏幕坐标的映射 和矩阵坐标 使用turtle

我被这个问题困住了

def showMatrix(turtle_object, sparse_matrix):
showMatrix()
函数将使用点阵可视化矩阵内容。每个网格位置将对应于单个矩阵位置(行、列)。“点”的存在表示非零条目

首先,需要使用
screen.setworldcoordinates()
方法。换句话说,显示屏的左下角将显示 变为坐标(0,0),右上角变为(行-1,列-1)。改变屏幕 通过匹配“网格”,坐标以这种方式简化了矩阵索引到屏幕坐标的映射 和矩阵坐标

使用turtle
.goto
.dot
方法,为每个矩阵绘制一个红点

这是我迄今为止所做的工作:

def matrix(n, init):
    matrix = []
    for i in range(n):
        row = []
        for j in range(n):
            row.append(init)
        matrix.append(row)
    return matrix



def sparse_matrix(matrix,n,value):
    import random
    ctr = 0
    while ctr < n:
        row = random.randint(0,order(m)-1)
        col = random.randint(0,order(m)-1)
        if matrix[row][col] != value:
            matrix[row][col] = value
            ctr += 1
    return matrix

def showMatrix(turtle_object, sparse_matrix):
    for i in len(m):
        for j in len(m):
            if sparse_matrix[i][j] != 0:
                sparse_matrix[i][j] = turtle_object
    return sparse_matrix
def矩阵(n,init):
矩阵=[]
对于范围(n)中的i:
行=[]
对于范围(n)内的j:
行追加(init)
矩阵追加(行)
返回矩阵
def稀疏_矩阵(矩阵,n,值):
随机输入
ctr=0
当ctr
(第1行,第1列)是什么意思

这与神秘的
m
变量和未定义的
order()
函数有关。我们还是继续吧。我们可以从
matrix()
函数中看到,我们正在处理一个平方矩阵,但我们甚至不假设它。在
sparse\u matrix()
函数中,我们可以通过执行以下操作来计算行和列:

rows = len(sparse_matrix)
columns = len(sparse_matrix[0])
同时检查
是否不为零


如何在turtle上显示稀疏矩阵

你的
sparse\u matrix()
函数没有正确地使用
turtle\u对象
——我们不想存储它,我们想让它画东西。这个函数可能不会返回任何东西。我猜应该是这样的:

def showMatrix(turtle_object, sparse_matrix):
    rows = len(sparse_matrix)

    if rows == 0:
        return

    columns = len(sparse_matrix[0])

    turtle_object.penup()

    for r in range(rows):
        for c in range(columns):
            if sparse_matrix[r][c] != 0:
                turtle_object.goto(c, r)
                turtle_object.dot(dot_size, "red")
其中,
dot\u size
目前为1。将其包装在一些代码中:

from turtle import Screen, Turtle

# ...

m = 6

screen = Screen()

dot_size = 1

yertle = Turtle(visible=False)

mat = matrix(order(m), 0)
sparse_matrix(mat, order(m / 2), 1)

showMatrix(yertle, mat)

screen.mainloop()
我们得到了一个不令人满意的图表:

因为一切都太小了,需要扩大规模

我不知道如何使用screen.setworldcoordinates()

我们可以使用turtle自己的
setworldcoordinates()
将窗口弯曲到图形限制,而不是直接在图形代码中添加比例因子:

screen.setworldcoordinates(0, 0, order(m), order(m))

dot_size = screen.window_width() / order(m)
这让我们在视觉上更加满意:


我希望这张草图能让你朝着正确的方向前进。

解决这个问题需要几条信息。第一个问题是稀疏矩阵的格式是什么?第二个问题是,到目前为止,您编写了什么代码来解决这个问题?在上面对其进行了编辑。您想问我们什么问题?如何在turtle上显示稀疏矩阵?我不知道如何使用screen.setworldcoordinates()。问题是什么意思(行1,列1)?它仍然没有显示任何内容。订单(m)来自哪里?@BrowserM,
order(m)
来自您提供的代码:
row=random.randint(0,订单(m)-1)
对。好的,但是我尝试了你的代码,但是它没有在海龟图形中显示矩阵。Shere的顺序函数我遗漏了def order(矩阵):return len(矩阵)