【求助】画图,如何实现不同的值对应不同的颜色
mathematica吧
全部回复
仅看楼主
level 6
nirvanლ 楼主
如何使得一张图内不同的L变量对应不同的颜色,visiblespectrum是可见光,默认范围为380到750,目前想的是表示出L的取值范围能画出来,但是不知道l的范围应该怎么表示,命令加在哪里?画出来应该是一个颜色连续渐变的图
DensityPlot[
225*Cos[(\[Pi]*(x^2 + y^2 + (l*10^-9)/2))/(l*10^-9)]^2, {x, -0.0015,
0.0015}, {y, -0.0015, 0.0015},
ColorFunction ->
Function[{x, y, l}, ColorData["VisibleSpectrum"][l]],
PlotPoints -> 100]
下面是关于visiblespectrum的例子
2022年01月11日 11点01分 1
吧务
level 10
「不知道l的范围应该怎么表示」,表示l的范围是什么意思?
2022年01月11日 16点01分 2
我没看明白你要做什么,你贴的代码画的也是空白图
2022年01月11日 16点01分
@asdasd1dsadsa 比如L=400时,运行出来的图是一个纯色,我想要实现的是能够使得L在某一范围内变化(比如说400-700),这样出来的就是渐变色,下面是L=400的代码
2022年01月11日 17点01分
@asdasd1dsadsa l = 400; DensityPlot[ 225*Cos[(\[Pi]*(x^2 + y^2 + (l*10^-9)/2))/(l*10^-9)]^2, {x, -0.0015, 0.0015}, {y, -0.0015, 0.0015}, ColorFunction -> Function[{x, y, l}, ColorData["VisibleSpectrum"][l]], PlotPoints -> 100]
2022年01月11日 17点01分
level 6
nirvanლ 楼主
最后应该和图二的效果差不多,只是渐变色是自定义的,不知道这样说是否能解释清楚
2022年01月11日 17点01分 3
level 4
2022年01月11日 23点01分 4
最后图应该和这个差不多,但不能直接确定L的数值的。不同的L应该对应不同的颜色,(这里的L是光的波长),颜色的渐变应该和L的范围有关,比如L取580-750就是黄红渐变,L取350-500就是蓝紫渐变,不知这样是否可以实现
2022年01月12日 02点01分
@nirvanლ ColorFunction的参数是函数值按比例缩放到[0,1],你只需要根据颜色数据的定义域的范围乘以该比例即可
2022年01月12日 15点01分
@nirvanლ 另外,如果想要在ColorFunction中获取原始函数值,需要将ColorFunctionScaling选项设置False,禁用缩放
2022年01月12日 15点01分
level 2
2022年02月17日 03点02分 5
1