|
From: Ethan A M. <sf...@us...> - 2018-07-30 21:10:32
|
On Sunday, July 29, 2018 10:37:49 PM PDT sfeam via gnuplot-beta wrote:
> On Saturday, 28 July 2018 22:35:00 Juhász Péter wrote:
> > Hello,
> >
> > I wanted to create a graph where tics on the colorbox are dynamically
> > generated from data. I vaguely recalled that there was a feature for
> > that, and it seemed logical that if there is {x|y}[2]ticlabels() to
> > place tics on the main axes, there should be a cbticlabels to do the
> > same for the colorbox.
> >
> > It seems that this is valid syntax, as the parser accepts it, and I've
> > found the code responsible for it in the source, but it appears to be
> > undocumented, and there are no demos for it either.
> >
> > It also appears to be either half-finished or buggy.
>
> All true. "cbticlabels" was added for completeness when the other
> ticlabels variants were introduced, but it was never fully thought
> out or documented.
>
> [snip]
> > See the attached data file and gnuplot script for a self-contained
> > example.
> >
> > The fix, at least from the user's perspective, seems simple: make
> > cbticlabels use the same column that is used for the color data itself.
> > From the developer's perspective, I realize that this might be hard,
> > because we don't yet know which column to use at the time of parsing
> > the using spec, because an unknown number of `xxx variable` statements
> > may come later.
> >
> > Or - `help pointsize variable` states that variable color is alwasy
> > taken from the last additional column. That we do know.
>
> Yes. I think that would be sufficient to cover all your test cases
> in 2D plots. Like this:
>
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> diff --git a/src/datafile.c b/src/datafile.c
> index 8baf1d5..208ca3a 100644
> --- a/src/datafile.c
> +++ b/src/datafile.c
> @@ -2059,7 +2059,7 @@ df_readascii(double v[], int max)
> break;
> case CT_CBTICLABEL:
> axis = COLOR_AXIS;
> - axcol = 3;
> + axcol = df_no_use_specs - 1;
> break;
> }
> /* Trap special case of only a single 'using' column */
> @@ -5315,7 +5315,7 @@ df_readbinary(double v[], int max)
> break;
> case CT_CBTICLABEL:
> axis = COLOR_AXIS;
> - axcol = 2;
> + axcol = df_no_use_specs - 1;
> break;
> }
> if (a.type == STRING) {
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>
> However that fix doesn't work so well for 3D plots, where there is always
> a z coordinate and that is usually (but not always) where the color comes
> from. The code in datafile.c is shared by both 2D and 3D plots so it
> would be tricky to make it work for both.
>
> Ethan
I commited that change for 5.3 and added a documentation section noting
that it is EXPERIMENTAL and that the 3D heat map case does not work as it
probably should.
Ethan
|