From ad23c1c436c3e031cc4b81849d0fa2b892851467 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 5 Feb 2009 01:04:42 +0000 Subject: pgfplots update (4feb09) git-svn-id: svn://tug.org/texlive/trunk@12087 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/pgfplots/todo.txt | 496 +++++++++++++++++++++++++- 1 file changed, 485 insertions(+), 11 deletions(-) (limited to 'Master/texmf-dist/doc/latex/pgfplots/todo.txt') diff --git a/Master/texmf-dist/doc/latex/pgfplots/todo.txt b/Master/texmf-dist/doc/latex/pgfplots/todo.txt index 23880977b8f..0c9e581e428 100644 --- a/Master/texmf-dist/doc/latex/pgfplots/todo.txt +++ b/Master/texmf-dist/doc/latex/pgfplots/todo.txt @@ -1,11 +1,237 @@ ------------------------------------------------------------- -BUGS +TODO pgfplots release 1.2 ------------------------------------------------------------- ++ redefine domain and samples key: the current implementation doesn't accept the + extended number range if provided outside of plot expression or plot gnuplot. ++ -> but it is now slightly incompatible FIXED ++ search for 'pt' suffixes which produce log message warnings ++ verify that plot expression and the fpu works with pgf 2.00 (which is not trivial) +X the unary '-' operator has the wrong precedence in both, pgf 2.00 and pgf CVS. + (can't be solved) ++ eliminate some of the dimen registers which are not absolutely necessary ++ check manual for missing features and updates ++ update manual: authors section ++ manual should contain more 'plot expression' than 'plot gnuplot' ++ there is a bug with 'axis equal' -> see manual examples ++ clean .table files from repository (at least the unused ones) ++ run all tests: + PGF 2.00 PGF CVS + FPU 2009-02-01 2009-02-01 + example plain 2009-02-01 2009-02-01 + example latex 2009-02-01 2009-02-01 + example context 2009-02-01 2009-02-01 + tests latex 2009-02-01 2009-02-01 + tests context 2009-02-01 2009-02-01 + clickable lib 2009-02-01 2009-02-01 + manual 2009-02-01 2009-02-01 ++ compile manuals ++ fix latest bugs +- submit ZIP files +- further features should be either very stable or should wait + + + +------------------------------------------------------------- +BUGS / FIXES +------------------------------------------------------------- + ++ something with the table package appears to be buggy!? + ++ the plot table[] search path is not good - it should include /pgfplots + +- introduce backwards compatibility with old pgfmathfloat.code.tex file + [ not interesting for pgfplots 1.2, only for pgfplots 1.1 !] + ++ there is a bug related with empty axes - I suppose in conjunction with the + tickmin/max feature (it won't be reset properly) + +- the arguments to plot file[#1] and plot table[#1] are not consistent with + rest. They need to be treated as behavior options (maybe in a different key + path). + + +- there is a space too much in some behavior messages (occured in test + processing) + +X introduce backwards compatibility with old pgfmathfloat.code.tex file + +- the pgf math parser has wrong precedence for '-' prefix op: + exp(-x^2) is wrong. + +- the auto-generated tick labels for non-unit-distance log axes could be better. + ++ verify that the domain key always accepts the extended data range + ++ I observed problems with opacity set for just one plot which was used for + every plot in the axes!? + + ++ the stacked plots impl is not yet in logical coords - that means it + won't work with non-standard unit vectors! + +- fix version stuff in package header +- introduce CVS Header Variables in every sourcefile + ++ The floating point math routines should be put into a separate library. + Provide compatibility support for that in pgfplots! + ++ empty plots cause bugs. ++ empty plots and the named nodes may not work correctly -> check that + ++ newlines in plot coordinates cause an error. + + provide sanity checking and correct error messages! + ++ 'domain' can't be used to increase the data range, even when combined with fp. ++ huge 'domain' arguments for 'plot function' lead to an 'dimension too large' error + although everything works fine + ++ the float math methods should be affected by the fixedpoint library, but they + are (because the underlying pgf math routines are exchanged). + +X scaled ticks is not properly implemented for log axes + + it is not available for log axes, so that's ok + ++ pgfplotstable and \rowcolor and 'sci sep align' in conjunction produces + overwritten digits! The color seems to be on top of the numbers left of the + sci separator. + -> This is caused by the left/right overhang of the colortbl package and my + implementation of 'sci sep align' as an extra column. That's bad. + -> Idea: + - manually overwrite \rowcolor/\columncolor/\cellcolor in a portable way such + that overhangs are made properly. + Maybe there is a macro in colortbl? + [fixed for \rowcolor] + + ++ stacked plots + error bars don't work correctly together: I need to shift the + error bars + ++ error bars should be drawn on top of the plot to avoid conflicts with filling. + ++ [xy]ticklabel pos values 'top' and 'bottom' are somewhat inconsistent with + the actual placement + ++ the auto-disable-feature for logarithmic minor ticks can be overruled (of + minor grid lines) which should not be possible + -> provide a good policy how to deal with user inputs: + 1. draw minor tick/grids if requested + 2. provide error message + ++ scatter is disabled if no default mark has been set. + ++ filter warnings are broken because they don't output the input coordinates + ++ tick align=center is broken since last revision. Possibly tick align=outside + as well. + ++ clickable lib is broken somehow + ++ check for clickable lib if multiple axes are in the same tikzpicture + -> doesn't work. Why!? + - I can't reproduce that bug. Maybe it is fixed in the meantime? + ++ the case + ymin=629.65, + ymax=629.70, + FAILS with math errors because the affine data transformation is deactivated + for the automatic tick computation! Providing tick labels manually works. + -> FIX THAT! Ticks should be computed without this restriction (if necessary, + in float arithmetics)! + ++ it is not possible to provide '[xy]mode' in styles. + -> ok, provided error message. + ++ check whether there are any plots before processing something like + 'xtick=data' or so + ++ the clipping of tick/grid lines is currently disabled due to the change to + logical coordinates and needs attention. + +- In 3D case axis [xyz] line != box, there is just ONE hyperplane. + My implementation works only if either ALL are box or ALL are 'middle'. + +- 3D case : which hyperplane gets tick LABELS? + The current implementation based on '[xzy]ticklabel pos' is not sufficient + +- 3D case: something fails with disabledatascaling + +- 3D case : grid lines work correctly, but they are not satisfactory. + I'd like grid lines in the background only. + +- 3D case : tick/grid lines are on top of the axis lines. This leads to + poor quality. + ++ '\coordinate () at (axis cs:0,0);' does NOT work; + '\node[name=] at ... ' DOES work. + -> I can't hook into the 'at' syntax; I can only override the 'name' + key. + ++ check whether the \label/\ref construction requires \protect\tikz and + \protect\path etc. if it is placed inside of \caption... + -> no; it has catcode 12 + ++ check whether named nodes are still ok. Since the 'fill opacity' bugfix, these + may be broken... + maybe the scoping needs to be improved + -> there is still need for scopes in case 'clip markers'! + ++ error messages if the PGF version is wrong should be added + -> check for \pgfkeys + -> I should also check whether the float routines are available! + Maybe they will migrate to a tikz library someday. + + ++ \addplot [fill opacity=...] is not scoped properly! ++ I suppose the same problem holds true for dotted line styles. ++ setting mark options to dashed also changes the legend's appearance + + ++ the clickable library does *not* work inside of figure environments + + + ++ renormalization bug in + log(9.999998e-01) = 4.70201 != 0 + +X Bug in table input: if colnames contain (some?) UTF8 characters, \csname \endcsname FAILS. + That means table column names can't use UTF8 characters. + Possible solution: for each character in , check whether it is active. If yes, change its meaning. + I am not sure if that's acceptable... + +X error recovery: it is sometimes almost impossible to find errors in + key-value-settings because \end{axis} or \pgfplotstabletypesetfile does not + is NOT the correct context. + -> possibly with \errorcontextlines=10? + ++ the error message for gnuplot invocation is wrong; gnuplot should be called on + the '.gnuplot' file instead of the '.table' file + ++ there are still plain TeX loops in the legend code!? + ++ javascript stuff is incompatible with a lot of active characters, + for example the german package: + + bug in insdljs: workaround introduced. + + bug in my code fixed + +- javascript stuff does not work if the complete figure is rotated (sidewaysfigure). + +- javascript: incompatiblity with external library: + 1. filenames: \jobname contains characters with incompatible catcodes and + that funny insdljs package tries to assemble macros with these + characters. + -> fixed; I simply use pgfplotsJS as temporary file name. + 2. the images as such have corrupted forms + -> Can be fixed if + \usepackage{eforms} + is used BEFORE loading pgf. The reason: \begin{Form} and the shipout-hackery + of the pgf externalization bite each other. + \begin{Form} must come before the shipout hackery of pgf. + 3. \includegraphics does not preserve PDF forms. - the interrupt bounding box feature should still update the data bounding box. Otherwise, transformations may fail. -- to check: it *could* be possible that errorbars + stacked plots are ++ to check: it *could* be possible that errorbars + stacked plots are incompatible. + the 'alias' and 'create on use' features may lead to errors. Check it! @@ -55,7 +281,7 @@ X active semicolons may be a problem + handle 'nan' and +-inf in plots -- 'every axis plot post' is not reflected in legend (at least not properly) ++ 'every axis plot post' is not reflected in legend (at least not properly) + plot function: incompatibility with 'german' package and " catcodes @@ -84,7 +310,7 @@ X active semicolons may be a problem + specifying axis limits for X should also limit those for Y (some sort of clipping) -- the text height of every axis x tick should be adjusted to allow tick scale +X the text height of every axis x tick should be adjusted to allow tick scale labels on the same vertical alignment -> bug in pgf: text height does not properly respect to the current font!? @@ -172,7 +398,219 @@ X verschiebung des ylabels ist komisch, wegen der rotate option FEATURES ------------------------------------------------------------- -- it would be interesting to get an high-level coordinate mapping +- the FPU uninstall command can be assembled ONCE (globally). No need to do that + multiple times. + +- What about something like '/pgfplots/table/x expr={}' ? + -> I could still use the lazy eval framework of pgfplotstable, i.e. + \thisrow{} commands, \pgfplotstablerow, \pgfplotstablecol etc. + The \prevrow and \nextrow features won't be possible (?) + +- improve support for multiple ordinates +- improve support for negative axes + ++ improve plot expression + + accuracy + + UI + +- it would be useful if the clipping could be disabled for certain parts of the + axis. Is that possible? + -> yes. + Idea: start clipping for every axis element separately! Shouldn't be + much more expensive than a single marker path. + - should work in the same way as before, there is no difference! + - scopes should introduce no further problems + - I could eliminate the nasty marker list + ++ what about an optimized version of plot expression which does not need the + brace hack (\x,{sin(\x r)}) ? + +- allow math expressions for axis limits etc. Idea: try float parsing routine; + if it fails: use math parser first. + ++ plot expression for log plots would be more valueable, if it could sample + points exponentially, i.e. linear between log(xmin) ... log(xmax): + x_i = exp( log(xmin) + i * ( log(xmax)-log(xmin) )/(N-1) ) + +- what about a feature like 'draw[xmin=...,xmax=...] fitline between points (a) + (b)'? + +- define a 'cycle list' style which simply inserts different colors into the + predefined style (thus, markers are fixed, colors vary). One could also think + about a complementary style. + -> even better: I could prodive up to three different lists which can be + combined. + Example: colorlist, markerlist, linespeclist + -> iterate through all possible combinations! + +- cycle list should be implemented using an array structure. That's faster. + + ++ create public key alias for '/pgfplots/domain' -> '/tikz/domain' + +X the coordinate preparation routines should assign global registers. This would + deal properly with grouped '\addplot' commands and it allows several + optimizations in the coordinate processing (elimination of list allocations). + +- document 'bar interval shift' and 'bar interval width' + ++ document line styles with arrows + +- think about quiver plots + +- interpolate missing coordinates for stacked plots. + +- think about a low-level contour plot interface in which PREPARED contours are + provided as input. The contours as such could be computed with an external + program (so far). + +- the error bar implementation is relatively inefficient. Think about something like + '/pgfplots/error bars/prepare drawing' + which sets common style keys for every error bar + +- think about using a combination of the visualization engine of pgf CVS and my + prepared-list-structure. Maybe I can adjust the list format for the current + plot type? I need + - scatter/line plots 2D + - meta coords + - quiver may need extra vectors + - matrix plots may need twodimensional structure + - error bars could be handled more consistently + - ... + -> implement a visualization class which provides methods + - prepare() + - visualize() + - serialize() + - visualizestream() + and provide protected pgfplots methods + - axis->preprocesscoordinate (filters, logs) + - visualizer->prepare() + - axis->processcoordinate() + - visualizer->serialize() + - axis->postprocesscoordinate() + The markers as they are implememted now don't really fit into this framework. + The clipping region is not really what I want here... + Idea: enable/disable clipping separately for each drawing command! + + +- provide 'only each nth coordinate' or so as style on top of 'x filter'. + +- 3D axes: my axis is "heavy weighted". + Possible improvements: + - draw exactly 3 axis lines (unless one really wants the complete box). + - draw only one tick line per tick, in a direction which "looks well" + (one of the two possible directions). + this would also avoid double placing of tick labels in corners. + - attach tick labels generally at the end of tick lines. Provide a + distance option configuring the distance. + -> my idea: + - for "normal" orthogonal axes (i.e. view={0,0}), the tick labels + are positioned directly at tick positions using proper anchors. + - for "non-standard" axes (skewed, rotated, 3D), tick labels are placed + at anchor 'center'; but the 'at' position it computed by pgfplots: + it is positioned parallel to the surfaces 'b' axes at a predefined + distance. + - user interface: [xy]ticklabel pos in + {left,right,top,bottom,auto,paraxial:} + -> 'auto' implements the behavior above; all other choices are user + defined. + - automatically decide WHICH axis lines shall be drawn. + - see http://mathworld.wolfram.com/EulerAngles.html + ++ implement simply style 'scatter classes'. + + sanity checking feature: try if 'pgfmathfloattofixed' results in a known + class! -> but catch exceptions if the value is no number! + ++ allow symbolic meta data + ++ provide input options for 'meta' data + + plot file + + plot table + + plot coordinates + - document that stuff + +- I could extend the clickable library such that a click into a TABLE + opens a marker into one (or more) designated plots. + ++ Optimization: normalize *internal* preprocessed stored point coordinate lists, + for example as 'x1,y1,z1,x2,y2,z2,x3,y2,z3,' -> I have 100% control! + Maybe it is even faster to re-use these lists for markers than to create a new + one. + +- I could compute maximum PGF logical coordinates which are then inserted just + before qpointxy + ++ optimize the new code by re-defining \pgfqpointxy for the case of scaled + standard unit vectors. + +X perhaps I can use pdf line annotations to improve clickable lib? + -> no: there are right restrictions when using latex. + +- there is a possibility to get that \label/\ref construction to work in + conjunction with image externalization: I only need to write those commands + into a separate AUX file and make sure they will remain ... even if the + generating source has been externalized. + The same could be done for javascript features; but that also requires bounding + box control. + + +- asymmetric error bars + +- Store the axis limits into the axis' node as saved macros. This would allow + - 'use [xy] limits of=' + - access to axis limits from other macros. + -> provide a command + \pgfplotslimits{current axis}{x}{min} + which expands to the 'xmin' limit. + PROBLEM: to WHICH limit: the untransformed one? The transformed one? The + logarithmized one? + -> I can't compute exp(xmin) in log plots! + - Ideas: + - provide both, if possible. It is NOT possible for log axes. + - use log-limits ( possibly combined with 'logxmin=' option ?) + - The operation requires several operations because floats need to + be converted. Idea: do that only for NAMED AXES. + -> all user-interface macros must be expandable! + - I don't want to spent time for number format conversions + unnecessarily here! + - provide \pgfplotslimits and \pgfplotstransformedlimits + combined with simpler key-value interfaces + - I could also provide access to the unit lengths (they are + available as macro anyway) + - ALTERNATIVE: implement access to axis limits as a math function + which simply defines \pgfmathresult. + -> that is probably the most efficient way to do it. I only need to + register the new function(s) to PGF MATH. + -> PGF 2.00: use \csname pgfmath@parsefunction@\pgfmath@parsedfunctionname\endcsname + -> PGF > 2.00: use \pgfmathdeclarefunction + Is it possible to provide 'string' arguments which are not + parsed? No. +- I could provide public macros for the data transformations (and inverse + transformations). This would also allow relatively simple access to axis + limits. + + + ++ I could optimize the number parser with '\csname ...#1\endcsname' + constructions where '#1' is the currently identified character. + If #1 in {0-9,e,E,+-} etc., I could save a lot of macro assignments and + \ifx character comparisons. + ++ Speaking about optimiziation: I always wanted to test \pgfmathln inside of the + log code (combined with float support). + ++ the 1000sep character should be placed for numbers >= 10000, not before. + +- provide predefined style for raised dots as 1000 seps. + ++ improve scaled ticks: allow manual control over the automatic tick scaling. + Idea: accept '[xy]scaled ticks=[false,true,auto,10^,]' + + true = auto: as it is now. + + false: as it is now. + + 10^k : accept an integer shift base 10. Should pose no impl. problem + + : use float math and quotients + ++ it would be interesting to get an high-level coordinate mapping X : K -> \R X(k) \in \R is the x-coordinate. Idea: K can be any type of input, for example @@ -184,6 +622,42 @@ FEATURES all output (tick labels) are given in K as well (requires X^{-1}). -> that's not difficult. ++ a scatter plot feature in which each mark gets its own set of options would be nice. + More precisely, a general feature which sets keys according to the current value should be + added -> this would also allow a (very early) visualisation of twodimensional functions. + Ideas: + + linearly map data range to colormap as in matlab. Could use the result of + the scaling trafo; no need to work with float here (?) + + scope around each marker + + The colormap thing is generally useful and may be used in other contexts + as well. Ideas: + + specification of colormap. An array of colors of size K? A color expression? + + providing color coordinates. Use the y coord? Or the z coord? Or + an expression of one of them? Maybe I still need high-level math + here? + + I guess the best is to use the same syntax as for pgfshadings. + Then, I will need to map linearly into a shading specification. + Technically, it is nothing but piecewise linear interpolation on + a non-equidistant grid. To improve lookup speed, I could + normalize the input to an equidistant grid. The interpolation + procedure involves one lookup operation and one interpolation step + between two adjacent color specs (given as RGB). + -> FIRST STEP: + + define normalized format (RGB, equidistant etc.). + + provide lookup + interpolation routine. + + force normalized input. Auto-normalizations (conversions) are + a second step. + + Implement scatter plots based on this spec. + + provide a 'color data source' key which is one of + 1. 'xyz' (copy coordinate) + 2. f(T(x),T(y),T(z)) as expression in transformed range + 3. f(x,y,z) as expression in untransformed range (float + required) + 4. explicit color spec 'c' + the cases 3. and 4. need changes in the coordinate preparation + routines. + + + styles are named very unintuitively. I should add something more convenient (for example like the 'legend style={}' command). Idea: use the *same* name @@ -199,7 +673,7 @@ FEATURES - It would be useful to get access to axis coordinates, for example in 'circle (XXX)' -- axis equal option ++ axis equal option - consider 'plot image[xmin=,xmax=,ymin=,ymax=] {}; -> load external plot image!? Only useful for matlab, if matlab would allow 100% @@ -234,7 +708,7 @@ X re-implement 'dec sep align' of table package natively, not as high-level Technical thing: map the CLIPPED data range or the TOTAL data range? What advantages/disadvantes appear? -- [Tikz] document how to use internal registers can be used in libraries. ++ [Tikz] document how to use internal registers can be used in libraries. + [Tikz] add an 'every plot mark' option and adjust 'mark options' accordingly @@ -281,7 +755,7 @@ X re-implement 'dec sep align' of table package natively, not as high-level + copy my personal' homepages short images to pgfplots website -- interrupt single plots at discontinuities (for example tan(x)) ++ interrupt single plots at discontinuities (for example tan(x)) -> don't draw from +infty to -infty - optimize plot expression @@ -295,7 +769,7 @@ X re-implement 'dec sep align' of table package natively, not as high-level + the non-boxed axis lines are placed at 'ZERO'. Maybe this zero level should get an anchor!? -> allows to place axis labels above it -- default style for axis lines to: {thin, black!25} ? ++ default style for grid lines to: {thin, black!25} ? X implement an axis as path-command @@ -401,10 +875,10 @@ X implement an axis as path-command + read just strings, no parsing - optimal: '\t' as separator. How can I teach TeX to use '\t' as separator!? - - would allow + + would allow + \addplot plot table[x=X,y=Z] {\table} and - - \typesettable[columns=...,format=sci,...,formatting options=...] {\table} + + \typesettable[columns=...,format=sci,...,formatting options=...] {\table} + implementation: simple run through column lists -> CONSISTENT data representation, powerful display options -- cgit v1.2.3