def plot_color_data(x,y,z=None, axh=None, show = True, cieobs =_CIEOBS, \ cspace = _CSPACE, formatstr = 'k-', **kwargs): """ Plot color data from x,y [,z]. Args: :x: | float or ndarray with x-coordinate data :y: | float or ndarray with y-coordinate data :z: | None or float or ndarray with Z-coordinate data, optional | If None: make 2d plot. :axh: | None or axes handle, optional | Determines axes to plot data in. | None: make new figure. :show: | True or False, optional | Invoke matplotlib.pyplot.show() right after plotting :cieobs: | luxpy._CIEOBS or str, optional | Determines CMF set to calculate spectrum locus or other. :cspace: | luxpy._CSPACE or str, optional | Determines color space / chromaticity diagram to plot data in. | Note that data is expected to be in specified :cspace: :formatstr: | 'k-' or str, optional | Format str for plotting (see ?matplotlib.pyplot.plot) :kwargs: | additional keyword arguments for use with matplotlib.pyplot. Returns: :returns: | None (:show: == True) | or | handle to current axes (:show: == False) """ x = np.atleast_1d(x) y = np.atleast_1d(y) if 'grid' in kwargs.keys(): plt.grid(kwargs['grid']);kwargs.pop('grid') if z is not None: z = np.atleast_1d(z) if axh is None: fig = plt.figure() axh = plt.axes(projection='3d') axh.plot3D(x,y,z,formatstr, linewidth = 2,**kwargs) plt.zlabel(_CSPACE_AXES[cspace][0], kwargs) else: plt.plot(x,y,formatstr,linewidth = 2,**kwargs) plt.xlabel(_CSPACE_AXES[cspace][1], kwargs) plt.ylabel(_CSPACE_AXES[cspace][2], kwargs) if 'label' in kwargs.keys(): plt.legend() if show == True: plt.show() else: return plt.gca()
#return _CMF if __name__ == '__main__': outcmf = 'lms' out = outcmf + ',trans_lens,trans_macula,sens_photopig,LMSa' LMS, trans_lens, trans_macula, sens_photopig, LMSa = cie2006cmfsEx(out=out) plt.figure() plt.plot(LMS[0], LMS[1], color='r', linestyle='--') plt.plot(LMS[0], LMS[2], color='g', linestyle='--') plt.plot(LMS[0], LMS[3], color='b', linestyle='--') plt.title('cie2006cmfsEx(...)') plt.show() out = outcmf + ',var_age,vAll' LMS_All, var_age, vAll = genMonteCarloObs(n_obs=10, fieldsize=10, list_Age=[32], out=out) plt.figure() plt.plot(LMS_All[0], LMS_All[1], color='r', linestyle='-') plt.plot(LMS_All[0], LMS_All[2], color='g', linestyle='-') plt.plot(LMS_All[0], LMS_All[3], color='b', linestyle='-') plt.title('genMonteCarloObs(...)') plt.show() LMS_All_US, var_age_US, vAll_US = genMonteCarloObs(n_obs=10,
def plotSL(cieobs =_CIEOBS, cspace = _CSPACE, DL = True, BBL = True, D65 = False,\ EEW = False, cctlabels = False, axh = None, show = True,\ cspace_pars = {}, formatstr = 'k-',\ diagram_colors = False, diagram_samples = 100, diagram_opacity = 1.0,\ diagram_lightness = 0.25,\ **kwargs): """ Plot spectrum locus for cieobs in cspace. Args: :DL: | True or False, optional | True plots Daylight Locus as well. :BBL: | True or False, optional | True plots BlackBody Locus as well. :D65: | False or True, optional | True plots D65 chromaticity as well. :EEW: | False or True, optional | True plots Equi-Energy-White chromaticity as well. :cctlabels: | False or True, optional | Add cct text labels at various points along the blackbody locus. :axh: | None or axes handle, optional | Determines axes to plot data in. | None: make new figure. :show: | True or False, optional | Invoke matplotlib.pyplot.show() right after plotting :cieobs: | luxpy._CIEOBS or str, optional | Determines CMF set to calculate spectrum locus or other. :cspace: | luxpy._CSPACE or str, optional | Determines color space / chromaticity diagram to plot data in. | Note that data is expected to be in specified :cspace: :formatstr: | 'k-' or str, optional | Format str for plotting (see ?matplotlib.pyplot.plot) :cspace_pars: | {} or dict, optional | Dict with parameters required by color space specified in :cspace: | (for use with luxpy.colortf()) :diagram_colors: | False, optional | True: plot colored chromaticity diagram. :diagram_samples: | 256, optional | Sampling resolution of color space. :diagram_opacity: | 1.0, optional | Sets opacity of chromaticity diagram :diagram_lightness: | 0.25, optional | Sets lightness of chromaticity diagram :kwargs: | additional keyword arguments for use with matplotlib.pyplot. Returns: :returns: | None (:show: == True) | or | handle to current axes (:show: == False) """ SL = _CMF[cieobs]['bar'][1:4].T SL = np.vstack((SL,SL[0])) SL = 100.0*SL/SL[:,1,None] SL = colortf(SL, tf = cspace, tfa0 = cspace_pars) Y,x,y = asplit(SL) showcopy = show if np.any([DL,BBL,D65,EEW]): show = False if diagram_colors == True: axh_ = plot_chromaticity_diagram_colors(axh = axh, show = diagram_colors, cspace = cspace, cieobs = cieobs,\ cspace_pars = cspace_pars,\ diagram_samples = diagram_samples,\ diagram_opacity = diagram_opacity,\ diagram_lightness = diagram_lightness,\ label_fontname = None, label_fontsize = None) else: axh_ = axh axh_ = plot_color_data(x,y,axh = axh_, cieobs = cieobs, cspace = cspace, show = show, formatstr=formatstr, **kwargs) if DL == True: if 'label' in kwargs.keys(): # avoid label also being used for DL kwargs.pop('label') plotDL(ccts = None, cieobs = cieobs, cspace = cspace, axh = axh_, show = show, cspace_pars = cspace_pars, formatstr = 'k:', **kwargs) if BBL == True: if 'label' in kwargs.keys(): # avoid label also being used for BB kwargs.pop('label') plotBB(ccts = None, cieobs = cieobs, cspace = cspace, axh = axh_, show = show, cspace_pars = cspace_pars, cctlabels = cctlabels, formatstr = 'k-.', **kwargs) if D65 == True: YxyD65 = colortf(spd_to_xyz(_CIE_ILLUMINANTS['D65']), tf = cspace, tfa0 = cspace_pars) plt.plot(YxyD65[...,1],YxyD65[...,2],'bo') if EEW == True: YxyEEW = colortf(spd_to_xyz(_CIE_ILLUMINANTS['E']), tf = cspace, tfa0 = cspace_pars) plt.plot(YxyEEW[...,1],YxyEEW[...,2],'ko') if showcopy == False: return axh_ else: plt.show()