如果我想在每个网格单元中为不同颜色的方形网格着色,那么可以在MATLAB中简单调用imagesc
Map<Person, Long> personToSalary
之类的Map<String, Long> lastnameToSalary
命令。
如果我想在网格中为不同的单元格着色,如下所示: here
默认情况下,这个功能在python或Matlab中是否可用?我尝试用非常小的方形单元离散这个网格。然后为每个细胞着色。这样可行。但这似乎很普通。是否有更聪明的方法来完成他的工作?
答案 0 :(得分:0)
在python中,polar
有内置axes
投影。此投影允许您自动使用极坐标中的每种绘图方法。特别是,您需要pcolor
或pcolormesh
,如下所示
import numpy as np
from matplotlib import pyplot as plt
r = np.linspace(0,4,5)
theta = np.linspace(0,2*np.pi,10)
theta,r = np.meshgrid(theta,r)
values = np.random.rand(*(theta.shape))
ax = plt.subplot(111,polar=True)
ax.pcolor(theta,r,values)
plt.show()
请注意,这会产生这样的情节
这几乎是你想要的。显而易见的问题是补丁顶点由直线连接,而不是圆弧后面的线。你可以通过使角度数组更密集来解决这个问题。这是一种可行的方法。
import numpy as np
from matplotlib import pyplot as plt
r = np.linspace(0,4,5)
theta = np.linspace(0,2*np.pi,10)
values = np.random.rand(r.size,theta.size)
dense_theta = np.linspace(0,2*np.pi,100)
v_indeces = np.zeros_like(dense_theta,dtype=np.int)
i = -1
for j,dt in enumerate(dense_theta):
if dt>=theta[i+1]:
i+=1
v_indeces[j] = i
T,R = np.meshgrid(dense_theta,r)
dense_values = np.zeros_like(T)
for i,v in enumerate(values):
for j,ind in enumerate(v_indeces):
dense_values[i,j] = v[ind]
ax = plt.subplot(111,polar=True)
ax.pcolor(T,R,dense_values)
plt.show()
哪会产生
我不知道在matlab中做到这一点的方法,但我用Google搜索并发现this表示它可以在极坐标中生成pcolor
图。你应该看看它。