summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/pgfplots/todo.txt
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/latex/pgfplots/todo.txt')
-rw-r--r--Master/texmf-dist/doc/latex/pgfplots/todo.txt496
1 files changed, 485 insertions, 11 deletions
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 (<aname>) at (axis cs:0,0);' does NOT work;
+ '\node[name=<aname>] 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 <colname>\endcsname FAILS.
+ That means table column names can't use UTF8 characters.
+ Possible solution: for each character in <colname>, 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={<math expression>}' ?
+ -> 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:<distance>}
+ -> '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=<axis name>'
+ - 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^<k>,<real>]'
+ + true = auto: as it is now.
+ + false: as it is now.
+ + 10^k : accept an integer shift base 10. Should pose no impl. problem
+ + <real>: 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=] {<graphics>};
-> 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