问题描述
我目前在Matlab中从现有数据集中获得了二维轮廓图.我制作了一个[x,y]网格,并使用该网格和z数据使用轮廓f(x,y,z)生成了二维轮廓图.我的目标是将相同的数据作为具有柔和的颜色渐变的色图而不是作为具有不同色带的二维轮廓图来重现.
I currently have a 2-D contour plot in Matlab from an existing data set. I made an [x,y] mesh grid and used this mesh grid and z-data to produce a 2-d contour plot using contourf(x, y, z). My goal is to reproduce this same data as a colormap, with smooth color gradients, rather than as a 2-d contour plot, with distinct color bands.
我尝试将imagesc(x,y,z)与[x,y]用作网格并没有使用.我最终得到了一个错误函数试图将SCRIPT imagesc作为函数执行:"
I have tried using imagesc(x, y, z) with [x,y] as a mesh grid and without. I ended up with an error function "Attempt to execute SCRIPT imagesc as a function:"
x = 0.1:0.1:1
y = 0.1:0.1:1
[X, Y] = meshgrid( x , y )
Z = #data#
contourf( X , Y , Z )
title
xlabel
ylabel
推荐答案
我不太确定您尝试使用imagesc
是什么问题...当我使用您的x
和y
并定义Z=sin(X*20)+sin(Y*20);
并运行imagesc(x,y,Z)
我得到
I'm not quite sure what's going wrong with your attempt to use imagesc
... When I used your x
and y
and defined Z=sin(X*20)+sin(Y*20);
and ran imagesc(x,y,Z)
I got
查看得到的错误消息,我怀疑您有一个保存为imagesc
的脚本,从而以某种方式覆盖了imagesc
函数.尝试运行edit imagesc
,看看会发生什么,这是一个函数吗?
Looking at the error message you're getting I suspect that you have a script somewhere saved as imagesc
which is somehow overwriting the imagesc
function. Try running edit imagesc
and see what comes up, is it a function?
现在,要使外观平滑,您有两个选择.首先,您可以使用更高的点密度,而不是10x10的网格.例如
Now as far as making this smooth looking you have two options. Firstly you could just use a higher density of points as opposed to a 10x10 grid. For example
x = linspace(0,1,1000);
y = linspace(0,1,1000);
[X, Y] = meshgrid( x , y );
Z=sin(X*20)+sin(Y*20);
imagesc(x,y,Z)
给予
或者,如果您希望/需要坚持低密度的点,则可以使用pcolor(X,Y,Z)
,然后设置shading interp
,这样可以得到
Alternatively, if you want/need to stick with the low density of points you can use pcolor(X,Y,Z)
and then set shading interp
which gives
这篇关于如何从Matlab中的现有数据集创建颜色图?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!