​
In[]:=
physicalEstart=AbsoluteTime[];​​collection="Physical";​​vsScheme="VisibleSpectrum";​​vsParameters=ColorData[vsScheme,"ParameterCount"];​​vsParameterRange=ColorData[vsScheme,"Range"];​​​​color380=ColorConvert[ColorData[vsScheme][380],"HSB"];​​n=380;​​While[(List@@ColorConvert[ColorData[vsScheme][n],"HSB"])[[1]]0.,n++];​​after380n=n;​​after380color=ColorConvert[ColorData[vsScheme][n],"HSB"];​​While[(List@@ColorConvert[ColorData[vsScheme][n],"HSB"])[[1]]≤(List@@ColorConvert[ColorData[vsScheme][n+1],"HSB"])[[1]],n++];​​maxHueN=n;​​maxHueColor=ColorConvert[ColorData[vsScheme][n],"HSB"];​​​​n=440+100;​​While[(List@@ColorConvert[ColorData[vsScheme][n-1],"HSB"])[[1]]1/3.,n--];​​firstGn=n;​​firstGcolor=ColorConvert[ColorData[vsScheme][n],"HSB"];​​​​n=440+100;​​While[(List@@ColorConvert[ColorData[vsScheme][n+1],"HSB"])[[1]]1/3.,n++];​​lastGn=n;​​lastGcolor=ColorConvert[ColorData[vsScheme][n],"HSB"];​​​​n=750;​​While[(List@@ColorConvert[ColorData[vsScheme][n-1],"HSB"])[[1]]0.,n--];​​before750n=n;​​before750color=ColorConvert[ColorData[vsScheme][n],"HSB"];​​color750=ColorConvert[ColorData[vsScheme][750],"HSB"];​​​​Print[];​​Print["\t",Column[{Style["ColorData[\"VisibleSpectrum\",\"Image\"]","Input"],ColorData[vsScheme,"Image"]},Center,1]]​​Print[];​​Print["\t",vsScheme,". parameters = ",vsParameters,", parameter range = ",vsParameterRange];​​Print["\t",vsScheme," color[380] = ",color380," ",InputForm[color380]];​​Print["\t",vsScheme," color[",after380n,"] = ",after380color," ",InputForm[ncolor]];​​Print["\t",vsScheme," color[",maxHueN,"] = ",maxHueColor," ",InputForm[maxHueColor]];​​Print["\t",vsScheme," color[",firstGn,"] = ",firstGcolor," ",InputForm[firstGcolor]];​​Print["\t",vsScheme," color[",lastGn,"] = ",lastGcolor," ",InputForm[lastGcolor]];​​Print["\t",vsScheme," color[",before750n,"] = ",before750color," ",InputForm[before750color]];​​Print["\t",vsScheme," color[750] = ",color750," ",InputForm[color750]];​​Print[];​​​​calloutList={380,440,520,550,610,750};​​vsNH=Which[​​MemberQ[calloutList,#[[1,1]]],Callout[#,Style[#[[1,1]],{Black,12}],​​If[((#[[1,1]]380)||(#[[1,1]]610)||(#[[1,1]]750)),Above,Automatic]],​​True,#​​]&/@(Style[​​{​​#,​​(List@@ColorConvert[ColorData[vsScheme][#],"HSB"])[[1]]​​},​​{ColorData[vsScheme][#],PointSize[Medium]}​​]&/@Range[vsParameterRange[[1]],vsParameterRange[[2]]]);​​​​vsLP=ListPlot[​​vsNH,​​AxesStyleTable[{Black,12},2],​​AxesLabel(Style[#,{Black,12}]&/@{"nm","Hue"}),​​PlotLabelColumn[​​{​​Style["Tristimulus Hue vs Electromagnetic Spectrum",{Black,13}],​​Row[{Style["from ",{Black,12}],Style["ColorData[\""<>vsScheme<>"\"]",{"Input",Black,12}]}," "],​​""​​},Center,0.5],​​ImageSize{512,Automatic}​​];​​Print[vsLP];​​Print[];​​​​physicalEfinish=AbsoluteTime[];​​physicalEelapsed=Quantity[physicalEfinish-physicalEstart,"Seconds"];​​Print["Elapsed time = ",ToString[physicalEelapsed]];​​