Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wolfram mathematica ColorFunction的动态(或强制)缩放_Wolfram Mathematica - Fatal编程技术网

Wolfram mathematica ColorFunction的动态(或强制)缩放

Wolfram mathematica ColorFunction的动态(或强制)缩放,wolfram-mathematica,Wolfram Mathematica,在阅读从matlab导入ColorData时,我想知道是否有一种方法可以改变ColorFunction的缩放范围。这可能还不完全清楚,所以让我用matlab中的一个图来演示(使用与上一个问题相同的示例) 左侧的曲线图是原始曲线图,ColorData映射到-1和1之间的数据值。现在,我可以轻松地将其设置为映射到0和1之间的数据值,结果是所有小于0的值都被指定为蓝色(在颜色映射中最低)PlotRange是最接近的函数,除此之外,使用ClippingStyle可以生成类似的图形。但是,它不会重新缩放

在阅读从matlab导入ColorData时,我想知道是否有一种方法可以改变ColorFunction的缩放范围。这可能还不完全清楚,所以让我用matlab中的一个图来演示(使用与上一个问题相同的示例)

左侧的曲线图是原始曲线图,
ColorData
映射到
-1
1
之间的数据值。现在,我可以轻松地将其设置为映射到
0
1
之间的数据值,结果是所有小于
0
的值都被指定为蓝色(在颜色映射中最低)
PlotRange
是最接近的函数,除此之外,使用
ClippingStyle
可以生成类似的图形。但是,它不会重新缩放颜色数据以映射到绘图范围

我在Mathematica怎么做


顺便说一句,要使用Mathematica插入色条,您可以查看以下内容,这里有一个应用于曲面的函数:

Plot3D[x + y, {x, -2, 2}, {y, -2, 2}, 
 ColorFunction -> (ColorData["Rainbow", #3] &), Mesh -> {{1}, {1}}]
为了查看右上角,使用相同的颜色函数和缩放,我设置了
ColorFunctionScaling->False
,并手动缩放颜色函数,使用
重新缩放将(全局)最小值映射为零,将最大值映射为一:

Plot3D[x + y, {x, 1, 2}, {y, 1, 2}, ColorFunctionScaling -> False,
 ColorFunction -> (ColorData["Rainbow", Rescale[#3, {-4, 4}, {0, 1}]] &)]

ColorFunctionScaling
选项有用吗?@Sasha:我忘了在我的帖子中提到这个。。。我尝试使用它,但只能将其设置为
True
False
。我正在寻找一些更灵活的方法来扩展它。例如,如果我只对一个小区域的变化感兴趣,我可以利用该区域的整个颜色值范围。正如Brett指出的,您可以在
颜色函数
旁边使用
颜色函数
。我们的想法是,将scaling设置为false意味着您自己进行缩放。我想您可能也会对Will Robertson和Mike Croucher的作品感兴趣。您也可以从Will的github帐户获得该软件包(并查看其开发):谢谢,这正是我想要的。这也可以扩展到自定义颜色函数吗?@d'o-o'b是的,这适用于任何颜色函数。关键部分是设置
ColorFunctionScaling->False
,然后用
Rescale[…]
替换
#3