ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

用python画出网格图与路线图

2022-08-23 00:31:41  阅读:192  来源: 互联网

标签:13 15 network python 画出 网格 next 19 path


 

 

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.pyplot import MultipleLocator
import copy
import pylab
import random

network = [[0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0],
           [0,1,1,0,1,0,1,1,1,0,0,0,1,1,1,1,0,0,0,0],
           [0,1,1,0,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,0],
           [0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0],
           [0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0],
           [1,1,1,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0],
           [1,1,1,1,0,0,1,1,1,0,0,0,0,1,0,0,0,0,0,0],
           [1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0],
           [1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0],
           [0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0],
           [0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,1,1,1,0],
           [0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,1,1,1,0],
           [0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0],
           [0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0],
           [0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0],
           [1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0],
           [1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1],
           [0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,1,0],
           [0,0,0,0,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0],
           [0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0]]

def return_axis(path):# 将坐标转换为axis
    path_x = []
    path_y = []
    for item in path:
        path_x.append(item[0])
        path_y.append(item[1])
    return path_x, path_y

def draw(network, path):
    n = len(network)
    network_draw = np.zeros((n,n))
    for i in range(n):# 换色
        for j in range(n):
            if network[i][j] == 0:
                network_draw[i][j] = 1
            else:
                network_draw[i][j] = 0
    mat = np.array(network_draw)
    plt.matshow(mat, cmap=plt.cm.gray)# 着色,黑白灰
    x = np.array(range(n))
    y = x
    for item in path:
        pylab.scatter(item[0], item[1],color='green')# 画点
    path_x, path_y = return_axis(path)
    plt.plot(path_x, path_y, 'g-', color='green')# 画折线
    # pylab.xticks(x)
    # pylab.yticks(y)
    # plt.grid()

    plt.show()

def accord(network, point, dx, dy, path):# 下一跳符合矩阵条件,且不在路径中、不为墙
    n = len(network)
    # print(point,dx,dy,path)
    next_x = point[0] + dx
    next_y = point[1] + dy
    # print([next_x, next_y],path,True)
    if next_x >= 0 and next_x < n and next_y >=0 and next_y < n and \
        network[next_x][next_y] != 1 and [next_x, next_y] not in list(path):
        return True
    return False

path = [[0,0],[1,0],[2,0],[3,0],[3,1],[3,2],[3,3],[3,4],[4,4],[5,4],[5,5],
        [5,6],[5,7],[6,7],[7,7],[8,7],[9,7],[10,7],[11,7],[12,7],[13,7],
        [13,8],[13,9],[13,10],[13,11],[13,12],[13,13],[13,14],[14,14],
        [15,14],[15,15],[15,16],[15,17],[15,18],[15,19],[16,19],[17,19],
        [18,19],[19,19]]
draw(network, path)

 

标签:13,15,network,python,画出,网格,next,19,path
来源: https://www.cnblogs.com/ljy1227476113/p/16614730.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有