如何在八度中进行“按数字显示颜色”绘图

时间:2019-06-05 17:51:10

标签: plot octave

我有两个参数或坐标x和y,还有一个量E(x,y,p),它是这两个参数的函数,但还取决于状态矩阵p。对于状态p,我有一些离散的选项-例如p1,p2,p3 ...-对于每对(x,y),我都会进行一些计算,以找出p中的哪些可能的状态会使E(x,y, p)。

获得这些信息后,我想制作一个2D图,其中点(x,y)周围的区域被着色,例如如果状态p1最小化为E,则绿色,如果状态p2最小化为E,则为蓝色,等等。

我可能还没有想到做这件事的简单方法。在专业地块中,我没有找到一个很好的方法,但是我在理解一些可能与之相关的东西时遇到了麻烦,例如pcolor和补丁。有关如何执行此操作的任何建议?

我想到的最好的方法是使用带有用于控制颜色的z值的surf,然后对3D图进行自顶向下的视图以获取所需的2D图。不过,这似乎是一种笨拙的做事方式。

1 个答案:

答案 0 :(得分:0)

我毕竟能够用pcolor完成这项工作。我为最小化Emin(x,y)=E(x,y,p)的{​​{1}}定义了p,然后将其命名为E(x,y,p)。我可以通过调用pcolor(Emin)在轴上添加刻度线,其中pcolor(xvec,yvec,Emin)是所用xvec的不同值的数组,等等。

x的工作原理是根据pcolorxvec定义的顶点对单元格进行着色,或者如果未给出顶点,则根据yvec的索引为单元格着色不会将单元格放在与该值相对应的坐标上居中。例如,如果我计算Emin并调用Emin(1,2)=5,则颜色对应于5的单元格的角将位于坐标(1,2)。我可以通过将pcolor(Emin)xvec移动一个单元格宽度的一半来解决此问题。例如,对于单位宽度的像元,该值为yvecxvec = xvec - 0.5的最后一行和最后一列未显示,但是我可以通过向其添加一个虚拟行和列来解决此问题。

在适当的情况下,我只使用线性间隔的Eminxvec,所以如果有其他合并间距的情况我可以避免。

希望这对阅读我发现的yvec文档有困难的其他人都有意义。