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

如果python中有公共数据,如何绘制矩阵

如果python中有公共数据,如何绘制矩阵,python,matplotlib,matrix,Python,Matplotlib,Matrix,我试图建立一个二维矩阵使用2个csv文件和矩阵应该显示绿色,如果两个文件都有一个基因,红色,如果不存在。我编写了一个python代码来比较这两个文件,如果存在或不存在,它将分别打印1或0。这就是代码: import csv with open('test1.csv','r') as input_file: reader = csv.reader(input_file) row_str1 = [] for row in reader: row_str1.ap

我试图建立一个二维矩阵使用2个csv文件和矩阵应该显示绿色,如果两个文件都有一个基因,红色,如果不存在。我编写了一个python代码来比较这两个文件,如果存在或不存在,它将分别打印1或0。这就是代码:

import csv
with open('test1.csv','r') as input_file:
    reader = csv.reader(input_file)
    row_str1 = []
    for row in reader:
        row_str1.append(row[1])
print row_str1
with open('test2.csv','r') as input_file:
    reader = csv.reader(input_file)
    row_str2 = []
    for row in reader:
        row_str2.append(row[1])
print row_str2

for const in row_str1:
    for var in row_str2:
        if const == var:
            print "1"
        else:
            print "0"
我有没有办法在2D矩阵中表示1和0,它应该看起来像,但应该是绿色而不是蓝色,红色而不是白色

编辑:这是我尝试过的代码,但是我的所有值都变绿了,我需要集成前面的代码和这段代码来获得我的最终脚本

import matplotlib.pyplot as plt
from matplotlib import colors
import numpy as np

data = np.array([[1, 1, 2, 1, 1, 2, 1, 2, 1, 1], [1, 1, 2, 1, 1, 2, 1, 2, 1, 1], [1, 1, 2, 1, 1, 2, 1, 2, 1, 1], [1, 1, 2, 1, 1, 2, 1, 2, 1, 1], [1, 1, 2, 1, 1, 2, 1, 2, 1, 1], [1, 1, 2, 1, 1, 2, 1, 2, 1, 1], [1, 1, 2, 1, 1, 2, 1, 2, 1, 1]])
cmap = colors.ListedColormap(['green',  'red'])
bounds = [0,  10,  20]
norm = colors.BoundaryNorm(bounds,  cmap.N)

fig,  ax = plt.subplots()
ax.imshow(data,  cmap=cmap,  norm=norm)

ax.grid(which ='major',  axis = 'both',  linestyle = '-',  color = 'k',  linewidth = 2)
ax.set_xticks(np.arange(-.5, 10, 1));
ax.set_yticks(np.arange(-.5, 10, 1));
plt.show()
我得到的结果是 我试图改变边界,但无法将所有颜色保留在一起。有没有一种方法可以让所有颜色的盒子都充满活力

请帮忙。
谢谢

您确实需要更改边界以匹配您的数据。此外,您还需要让边界规范与您想要的颜色数量相匹配

import matplotlib.pyplot as plt
from matplotlib import colors
import numpy as np

data = np.array([[1, 1, 2, 1, 1, 2, 1, 2, 1, 1], [1, 1, 2, 1, 1, 2, 1, 2, 1, 1], 
                 [1, 1, 2, 1, 1, 2, 1, 2, 1, 1], [1, 1, 2, 1, 1, 2, 1, 2, 1, 1], 
                 [1, 1, 2, 1, 1, 2, 1, 2, 1, 1], [1, 1, 2, 1, 1, 2, 1, 2, 1, 1], 
                 [1, 1, 2, 1, 1, 2, 1, 2, 1, 1]])
cmap = colors.ListedColormap(['green',  'red'])
bounds = [0.5,  1.5,  2.5]
norm = colors.BoundaryNorm(bounds,  len(bounds)-1)

fig,  ax = plt.subplots()
im = ax.imshow(data,  cmap=cmap,  norm=norm)

ax.grid(which ='major',  axis = 'both',  linestyle = '-',  color = 'k',  linewidth = 2)
ax.set_xticks(np.arange(-.5, 10, 1));
ax.set_yticks(np.arange(-.5, 10, 1));
fig.colorbar(im, ticks=[1,2])
plt.show()

您已经做了一些工作,了解如何确定一个文件中的哪些元素也在第二个文件中。干得好!但是你对绘图部分什么也没做。你试过什么?什么不起作用?这不是一个代码编写服务,展示您的工作并提出具体问题,请参见。对此我感到非常抱歉,我没有包括我遇到问题的代码,如果需要更多的格式化,请让我知道,非常感谢