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来显示随机结果。我想得到这样的图像:
答案 0 :(得分:1)
您可以使用1d
将2d
- 转换为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()
结果如下:
答案 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')
所以我想通过其他方法来展示它.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')
结果更好。但我有一个问题,如果我使用pcolor函数如何设置轴刻度?