Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!newsfeed.fsmpi.rwth-aachen.de!eternal-september.org!feeder.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail From: Ethan A Merritt Newsgroups: comp.graphics.apps.gnuplot Subject: Re: Plot emtpy labels from file entries using 'matrix with image' Date: Thu, 20 Nov 2014 21:39:04 -0800 Organization: made entirely of Lego Lines: 87 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7Bit Injection-Date: Fri, 21 Nov 2014 05:38:53 +0000 (UTC) Injection-Info: mx02.eternal-september.org; posting-host="7bbfccb08e3cb0f92ebf95516f5f5a81"; logging-data="24801"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18e4yvN4izA/1VkCNvlNl/W" User-Agent: KNode/4.12.5 Cancel-Lock: sha1:+xgy3TjzyxbS0Pg2pyjdtTT0koI= Xref: csiph.com comp.graphics.apps.gnuplot:2639 Let's try the simple answer first. You used the command > The ternary operator in the following fashion do not seem to do the job > using 1:2:( \$3 == '' ? 1/0 : sprintf('%.2f', (\$3) ) ) but you probably did not realize that a curious property of NaN is that is by definition never equal to any other entity, including itself. So A=NaN; if (A != A) print "A is not a number" So your test would better be written using 1:2:(($3!=$3) ? "" : sprintf('%.2f', $3)) Of course there may be other problems as well, but try that first. By the way, it is very rare to have to use multiplot to create a single plot. I don't think you really need to do so here either. But leave that for now. Ethan neurino wrote: > Hello group, > > I have a file with a 4x4 score matrix and I'd like to plot the upper > triangular with one color palette and the lower triangular with a > different one, overlaying the score value (MWE code at the bottom). > > The original file looks like this > > 0.00 0.65 0.65 0.25 > 0.25 0.00 0.75 0.25 > 0.50 0.60 0.00 0.25 > 0.75 0.25 0.10 0.00 > > First, I created two separate files and used multiplot to have 2 > different palettes. > > FILE1 (upper triangular) > 0.00 0.65 0.65 0.25 > nan 0.00 0.75 0.25 > nan nan 0.00 0.25 > nan nan nan 0.00 > > FILE2 (lower triangular) > 0.00 nan nan nan > 0.25 0.00 nan nan > 0.50 0.60 0.00 nan > 0.75 0.25 0.10 0.00 > > Second, I plot the score values with > using 1:2:( sprintf('%.2f', $3 ) ) > > However, the 'nan' isn't interpreted as blank/empty and skipped but > written onto the plot. > > Any idea how to skip the nans and make gnuplot plot empty labels from > individual entries of the data files? > > The ternary operator in the following fashion do not seem to do the > job using 1:2:( \$3 == '' ? 1/0 : sprintf('%.2f', (\$3) ) ) > > Thanks. > > --- > set multiplot > set autoscale fix > unset key > > set datafile missing "nan" > set cbrange [0:1] > unset colorbox > > set palette defined (0 "white", 0.1 "#9ecae1", 1.0 "#3182bd") > > plot FILE1 matrix with image, \ > FILE1 matrix using 1:2:( sprintf('%.2f', $3) ) with labels font ',16' > > set palette defined (0 "white", 0.1 "#a1d99b", 1.0 "#31a354") > > plot FILE2 matrix with image, \ > FILE2 matrix using 1:2:( sprintf('%.2f', $3) ) with labels font ',16' > > unset multiplot