Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.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 2.7_Graphics - Fatal编程技术网

Python &引用;最简单的;以图形方式表示矩阵的方法

Python &引用;最简单的;以图形方式表示矩阵的方法,python,python-2.7,graphics,Python,Python 2.7,Graphics,我在做一个涉及渗流的赋值——长话短说,我有一个表示网格的数组,每个条目都是-1、0或1。我的作业基本上已经完成了,但有一部分要求为每个可能的条目使用颜色对矩阵进行图形表示。但是从作业的措辞来看,我觉得也许我不应该使用标准Python2.7和numpy中没有的东西 我想不出怎么做,所以我继续导入pylab,并在散点图中将每个坐标绘制为一个大的彩色正方形。但我有一个令人不安的担忧,就是有更好的方法来完成这项任务——比如有更好的软件包来完成这项任务,或者有一种方法可以用numpy来完成。建议 如果有帮

我在做一个涉及渗流的赋值——长话短说,我有一个表示网格的数组,每个条目都是-1、0或1。我的作业基本上已经完成了,但有一部分要求为每个可能的条目使用颜色对矩阵进行图形表示。但是从作业的措辞来看,我觉得也许我不应该使用标准Python2.7和numpy中没有的东西

我想不出怎么做,所以我继续导入pylab,并在散点图中将每个坐标绘制为一个大的彩色正方形。但我有一个令人不安的担忧,就是有更好的方法来完成这项任务——比如有更好的软件包来完成这项任务,或者有一种方法可以用numpy来完成。建议

如果有帮助,我当前的代码如下

def show_perc(sites):
    n = sites.shape[0]
    # Blocked reps the blocked sites, etc., the 1st list holds x-coords, 2nd list holds y.
    blocked = [[],[]]
    full = [[],[]]
    vacant = [[],[]]
    # i,j are row,column, translate this to x,y coords.  Rows tell up-down etc., so needs to
    # be in 1st list, columns in 0th.  Top row 0 needs y-coord value n, row n-1 needs coord 0.
    # Column 0 needs x-coord 0, etc.
    for i in range(n):
        for j in range(n):
            if sites[i][j] > 0.1:
                vacant[0].append(j)
                vacant[1].append(n-i)
            elif sites[i][j] < -0.1:
                full[0].append(j)
                full[1].append(n-i)
            else:
                blocked[0].append(j)
                blocked[1].append(n-i)
    pl.scatter(blocked[0], blocked[1], c='black', s=30, marker='s')
    pl.scatter(full[0], full[1], c='red', s=30, marker='s')
    pl.scatter(vacant[0], vacant[1], c='white', s=30, marker='s')
    pl.axis('equal')
    pl.show()
def show_perc(站点):
n=站点。形状[0]
#被阻止的代表被阻止的站点等,第一个列表包含x坐标,第二个列表包含y坐标。
阻塞=[],[]
完整=[],[]
空缺=[],[]
#i,j是行,列,将其转换为x,y坐标。行表示上下等,因此需要
#在第一个列表中,列在第0个列表中。顶行0需要y坐标值n,行n-1需要坐标0。
#列0需要x坐标0等。
对于范围(n)中的i:
对于范围(n)内的j:
如果站点[i][j]>0.1:
空[0]。追加(j)
空[1]。追加(n-i)
elif站点[i][j]<-0.1:
完整[0]。追加(j)
完整[1]。追加(n-i)
其他:
已阻止[0]。追加(j)
已阻止[1]。追加(n-i)
pl.scatter(阻塞[0],阻塞[1],c='black',s=30,marker='s')
pl.scatter(满[0],满[1],c='red',s=30,marker='s')
pl.scatter(空[0],空[1],c='white',s=30,marker='s')
pl.axis(“相等”)
pl.show()

如果不允许您使用其他库,您就只能使用ASCII art。例如:

>>> import numpy as np
>>> a = np.random.randint(-1, 2, (5,5))
>>> a
array([[ 0,  0,  1,  1,  0],
       [ 1, -1,  0, -1,  0],
       [-1,  0,  0,  1, -1],
       [ 0,  0, -1, -1,  1],
       [ 1,  0,  1, -1,  0]])
>>> 
>>> 
>>> b[a<0] = '.'
>>> b = np.empty(a.shape, dtype='S1')
>>> b[a<0] = '_'
>>> b[a==0] = ''
>>> b[a>0] = '#'
>>> b
array([['', '', '#', '#', ''],
       ['#', '_', '', '_', ''],
       ['_', '', '', '#', '_'],
       ['', '', '_', '_', '#'],
       ['#', '', '#', '_', '']], 
      dtype='|S1')
>>> 
>>> for row in b:
...     for elm in row:
...         print elm,
...     print
... 
  # # 
# _  _ 
_   # _
  _ _ #
#  # _ 
>>>     

您也可以使用如下图所示的Hinton图表。matplotlib和中提供了代码示例

烹饪书中的一个被分成两个功能,如果你想要,例如,颜色刻度而不是大小刻度,或者两者都想要,可能更容易适应

你可以在这篇文章中看到关于用乳胶绘制这些图的讨论。

这可能会引起您的兴趣,您可以使用ANSI转义序列和装饰器对文本块进行颜色编码,请参见:
>>> import matplotlib.pyplot as plt
>>> plt.ion()
>>> plt.imshow(a, cmap='gray', interpolation='none')