使用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(矩阵)