2014-12-31 13 views
0

我想弄清楚如何使用colorbar来显示幅度而不是数值。目前,颜色条的范围是[-x x],其中任何负值都是蓝色的。在确定要绘制图形的颜色时,我希望颜色条忽略符号值。如何使用彩条绘制数量的绝对值?

我试着将[0 x]的范围设置为CLim,但这只是描绘了一个负蓝色的东西。

一个例子就是绘制一个球体。如果绘制一个球体,它将在原点处居中 ,颜色只会反映z轴的值。但是,我希望颜色条显示距离中心的距离的大小。所以,在这种情况下,球体应该是代表半径的纯色。

任何想法?

+3

如果您使用的是散点图,则可以使用'scatter(t,x,[],abs(x)),colorbar'。你可能想通过发布一个例子来包含更多关于你想要绘制的信息。 – DreamBig

+1

我也建议使用abs(矩阵),其中矩阵是您的数据。适用于所有绘图程序,包括pcolor和contourf。 – boxofchalk1

+0

有许多方法可以修改色条,但这些通常会删除matlab图的一些自动功能(例如,在调整图形大小时,手动标记标签是否会自动更新刻度标签,这会导致给定刻度标签被缠绕)。这些事情也需要一些工作来使它看起来不错。这就是为什么建议修改绘图数据的原因。然后,您可以让matlab绘制您输入的内容。如果你想绘制绝对值,那么将绝对值作为输入是有意义的:) – patrik

回答

1

在制作图形之前,您必须先将所绘制数据的大小(例如,使用abs(data)函数)取出来。然后,您可以使用caxis([min max])函数设置色条刻度。

例子:

rawData=repmat([-10:1:10],10,1); 

figure(1),imagesc(rawData),caxis([0 10]) % All raw values below 0 are plotted as blue 

magnData=abs(rawData) % Take absolute value of raw data 

figure(2),imagesc(magnData),caxis([0 10]) % Raw negative values are now plotted in the same color as positive raw values (i.e. ignoring the sign, per the solution you requested). 

您的解决方案(CLim)没有工作,因为设置的颜色范围[0 x]将所有值的颜色比0低到0(蓝色值的情况相关联, “jet”色彩地图)。

+0

这仍然适用于3D绘图吗? – niwhsa