matlab中contour和contourf函数同时使用出现问题
我在一张图的左侧用contourf作图,然后用另一组数据,在右侧用contour作图,结果左侧图的颜色发生了变化,与colormap不对应了,请问该如何解决?...
我在一张图的左侧用contourf作图,然后用另一组数据,在右侧用contour作图,结果左侧图的颜色发生了变化,与colormap不对应了,请问该如何解决?
展开
2个回答
展开全部
一个figure里面只能用同一个colormap
用subplot可以在一个figure中画几个小图
但是它们是共享一个colormap的
但是它们是对应的颜色影射的范围是根据各自不同数据而定的
如果两个图的数据的范围不一致,那么这两个图中相同的颜色所表示的数值是不同的
如果在两个图都画完之后,在figure中添加colorbar,
那么这个colorbar只是表示后面一张图的颜色影射关系
如果两图数据范围不一样,那么这个colorbar是不能和第一副图对应的
subplot(121),contourf(...);colorbar
subplot(122),contour(...);colorbar
这样可以为两个图画出各自的颜色影射关系,应该看出是不一样的
如果需要这个figure里面的两幅图有相同的颜色影射关系
可以在画图之后加两句
h=get(gcf,'children');
set(h,'CLim',[minv maxv]);
这里的minv和maxv是你需要用颜色表示的最小值和最大值
一般最小值取你左右两图数据的最小,最大值取你两图数据的最大
那么左右两图颜色影射关系就一样,同样的颜色在两图中表示的数值相同
但是要记住一个figure里只有一个colormap
如果你在画第一副图是用了一种colormap,而画第二幅图时改变一个colormap
那么第一幅图的颜色也会因此而改变
不能用简单的办法让subplot中的各个图使用不同的colormap
用subplot可以在一个figure中画几个小图
但是它们是共享一个colormap的
但是它们是对应的颜色影射的范围是根据各自不同数据而定的
如果两个图的数据的范围不一致,那么这两个图中相同的颜色所表示的数值是不同的
如果在两个图都画完之后,在figure中添加colorbar,
那么这个colorbar只是表示后面一张图的颜色影射关系
如果两图数据范围不一样,那么这个colorbar是不能和第一副图对应的
subplot(121),contourf(...);colorbar
subplot(122),contour(...);colorbar
这样可以为两个图画出各自的颜色影射关系,应该看出是不一样的
如果需要这个figure里面的两幅图有相同的颜色影射关系
可以在画图之后加两句
h=get(gcf,'children');
set(h,'CLim',[minv maxv]);
这里的minv和maxv是你需要用颜色表示的最小值和最大值
一般最小值取你左右两图数据的最小,最大值取你两图数据的最大
那么左右两图颜色影射关系就一样,同样的颜色在两图中表示的数值相同
但是要记住一个figure里只有一个colormap
如果你在画第一副图是用了一种colormap,而画第二幅图时改变一个colormap
那么第一幅图的颜色也会因此而改变
不能用简单的办法让subplot中的各个图使用不同的colormap
展开全部
我的解决办法是:对于你用contour画的那个等值线,用contourc先求出等值线(xy坐标)来,然后用plot命令再把等值线画上去。
追问
我想用Z=contour(xx3,yy3,stream_v,40,'k')命令取出流函数的坐标,然后按照你的方法用plot画图;其效果应该类似于contourc命令。可是取出来的Z有两行N列,数据有点乱,不知道如何正确提取出数据坐标,请问该如何做?PS: 我的数据本身是非均匀网格。
此外,1楼的回答已经解决了我的问题。这里是想知道如何提取出contour后的具体数据。
多谢!
我想用Z=contour(xx3,yy3,stream_v,40,'k')命令取出流函数的坐标,然后按照你的方法用plot画图;其效果应该类似于contourc命令。可是取出来的Z有两行N列,数据有点乱,不知道如何正确提取出数据坐标,请问该如何做?PS: 我的数据本身是非均匀网格。
此外,1楼的回答已经解决了我的问题。这里是想知道如何提取出contour后的具体数据。
多谢!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询