如何在python中使用imshow方法绘制2d随机数据

时间:2017-07-07 04:09:50

标签: python matplotlib

import numpy as np
C=np.random.rand (500)
S=np.random.rand(500)
def function(s,c):
    return s*2+c
dc=[]
for i in range(len(C)):
    dc.append(function(S[i],C[i])

我不知道如何用imshow来显示随机结果。我想得到这样的图像:

2 个答案:

答案 0 :(得分:1)

您可以使用1d2d - 转换为np.reshape - 数组。此外,您不需要按顺序执行数组算术 - numpy为您执行此操作。下面的代码有望做你想要的(从你的问题中不太清楚):

import numpy as np
from matplotlib import pyplot as plt


C=np.random.rand(500).reshape((20,25))
S=np.random.rand(500).reshape((20,25))

def function(s,c):
    return s*2+c

dc = function(S,C)

plt.imshow(dc)
plt.show()

结果如下:

result of the given code

答案 1 :(得分:0)

在测试中,我得到了散点图,但最好不要显示所有内容。

import numpy as np
import matplotlib.pyplot as plt
def function(C,S):
    return 2*C+S**2
axis=plt.subplot()
Sand=np.random.rand(50)
Clay=np.random.rand(50)
dc=function(C=Clay,S=Sand)
plt.scatter(Clay,Sand,c=dc,cmap='jet')
axis.set_xlabel('Clay')
axis.set_ylabel('Sand')

enter image description here

所以我想通过其他方法来展示它.Pcolor或imshow是实现它的更好方法。所以我:

import numpy as np
from matplotlib.figure import Figure
import matplotlib.pyplot as plt
axis=plt.subplot()
def function (C,S):
    return 2*C+S**2
axis=plt.subplot()
dc=np.ones(50*50).reshape(50,50)
Sand=np.random.rand(50)
Clay=np.random.rand(50)
Clay_or=sorted(Clay)
Sand_or=sorted(Sand,reverse=True)
for i in range(50):
    for j in range (50):
        result=function(Clay_or[i],Sand_or[j])
        dc[j][i]=result
plt.imshow(dc,cmap='jet',extent=(0,1,0,1))
axis.set_xlabel('Clay')
axis.set_ylabel('Sand')

enter image description here

结果更好。但我有一个问题,如果我使用pcolor函数如何设置轴刻度?