【问题标题】:How can I plot the absolute value of a quantity with colorbar?如何用颜色条绘制数量的绝对值?
【发布时间】:2015-02-27 21:00:43
【问题描述】:

我试图弄清楚如何使用colorbar 来显示大小而不是值。目前,颜色条的范围为 [-x x],其中任何负值都是蓝色的。在确定绘制图表的颜色时,我希望颜色条忽略符号值。

我尝试在CLim 中将范围设置为[0 x],但这只会绘制任何负蓝色。

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

有什么想法吗?

【问题讨论】:

  • 如果使用散点图,可以使用scatter(t,x,[],abs(x)), colorbar。您可能希望通过发布示例来包含有关您尝试绘制的内容的更多信息。
  • 我还建议使用 abs(matrix),其中 matrix 是您的数据。适用于所有绘图例程,包括 pcolor 和 contourf。
  • 有一些方法可以修改颜色条,但这些方法通常会删除一些 matlab 绘图的自动功能(例如,手动刻度标签是否会在调整图形大小时删除刻度标签的自动更新。这个导致给定的刻度标签被环绕)。这些东西也确实需要一些工作才能让它看起来不错。这就是建议修改绘图数据的原因。然后你可以让 matlab 绘制你作为输入提供的内容。如果你想绘制绝对值,那么将绝对值作为输入是有意义的:)

标签: matlab colorbar colormap


【解决方案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 " 颜色图)。

【讨论】:

  • 这仍然适用于 3D 绘图吗?
猜你喜欢
  • 2018-11-16
  • 2020-02-20
  • 2018-02-19
  • 1970-01-01
  • 2022-12-11
  • 2021-11-07
  • 2019-03-19
  • 2019-03-23
相关资源
最近更新 更多