[R] CIE Diagram with wavelengths tick marks

Tilmann Faul T||m@nn_F@u| @end|ng |rom t-on||ne@de
Thu Jul 20 21:46:03 CEST 2023


Hy Ken,

Thanks for your answer.
Your assumptions are correct, i wan to plot a CIE 1931 2 deg standard.
I am aware of the possibility to calculate the tick marks and its 
orientation by some calculation.
But before that, i wanted to ask whether there is something ready out there.

Ans thanks for the Code, it helped me on another problem.

best

Tilmann


On 20.07.23 14:42, Kenneth Knoblauch wrote:
> Hi,
> 
> I'm assuming that by CIE Diagram, you mean the 1931 2 deg standard.  Tables of these (and other CIE standards) can be found at the site http://www.cvrl.org maintained by Andrew Stockman.  You can find and download these classic CIE data and more modern versions from there.
> 
> Since you have plotted the spectrum locus of the chromaticity diagram (I'm supposing), you ought to be able to just pick off the wavelengths that you want and add a small point or a small line as a tick mark.  If you want it oriented, you'll have to do a little calculation to get the direction perpendicular to the spectrum locus at each wavelength, but that's not too complicated.
> 
> I recently needed a figure for a talk and downloaded the 2 deg 1931 data from the above website and used points to indicate specific wavelengths that interested me.  The code is below:
> 
> d <- read.csv("ciexyz31_1.csv", header = FALSE, stringsAsFactors = TRUE)
> names(d) <- c("Wavelength", "X", "Y", "Z")
> d$x <- with(d, X/(X + Y + Z))
> d$y <-  with(d, Y/(X + Y + Z))
> 
> par(pty = "s")
> plot(y ~ x, d, type = "l", axes = 'FALSE',
> 	xlim = c(0, 1), ylim = c(0, 1))
> lines(y[c(1, nrow(d))]~ x[c(1, nrow(d))], d)
> axis(1, seq(0, 1, 0.2))
> axis(2, seq(0, 1, 0.2))
> lines(c(0, 1), c(1, 0), col = "blue", lwd = 2, lty = 2)
> 
> points(d[d$Wavelength == 555, ]$x, d[d$Wavelength == 555, ]$y, pch = 16, col = "green")
> points(d[d$Wavelength == 589, ]$x, d[d$Wavelength == 589, ]$y, pch = 16, col = "yellow")
> points(d[d$Wavelength == 670, ]$x, d[d$Wavelength == 670, ]$y, pch = 16, col = "red")
> 
> Good luck.
> 
> best,
> 
> Ken
> 
> 
> # Hy,
> 
> # for plotting CIE Diagrams i found Package pavo with function cieplot.
> # That works fine.
> # Now i want to have wavelength tick marks as well around the plotting area.
> # Is there a way to do so, also other ways/Pakages to plot are welcome.
> 
> # My sample Code:
>     # library(pavo)
> 
>     # coldat2 <- as.data.frame(matrix(rep(1/3, 3), nrow = 1, ncol = 3))
> 
>     # # Make sure this dataset works with the cieplot() function
>     # attr(coldat2, "clrsp") <- "CIEXYZ"
>     # colnames(coldat2) <- c("x", "y", "z")
> 
>     # cieplot(coldat2, col="white", main="CIE Test Plot")
> 
> 
> 
> # Best regards
> # Tilmann
> 
> 
> 
>       
>    
>   
>    ___
>    Kenneth Knoblauch
>   Inserm U1208
>   Stem-cell and Brain Research Institute
>   18 avenue du Doyen Lépine
>   69500 Bron
>   France
>   tel: +33 (0)4 72 91 34 77
>   fax: +33 (0)4 72 91 34 61
>   portable: +33 (0)6 84 10 64 10
>   https://sbri.fr/public-profile/63/single-member/
>      
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list