------------------------------------------------------------- Testing ------------------------------------------------------------- last test verifications: pgf CVS pgf 2.00 pgfplotstests 2009-02-16 2009-02-16 manual 2009-02-16 2009-02-16 example latex for 1.2 2009-02-16 example context for 1.2 2009-02-16 example plain tex for 1.2 2009-02-16 ------------------------------------------------------------- BUGS / FIXES ------------------------------------------------------------- - the plot mark code invokes a lot of math parsing routines - which is a waste of time in my opinion. All expressions etc. have already been parsed. Potential for optimization! - verify that 'draw=none' works! Is something broken here? -> write tests! + it appears to be desired that (at least some) markers invoke \pgfusepathqfillstroke -> they always 'draw', regardless of tikz color settings. -> ok, I patched that in my marker code... (hackery :-( ) - no, it works only partially: draw=none or fill=none works as expected. But 'blue' disables filling!? + provide example for colormap changes - that should also verify the correctness of the method + provide sanity checking in scatter plots - for example missing explicit scatter src. + improve docs for scatter plots: + 'only marks' is also a scatter plot! - check behavior options provided to table[] and file[] and so - is that correct? + 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 incompatible. + the 'alias' and 'create on use' features may lead to errors. Check it! + variables which are used both globally and locally seem to fill TeX's save stack to due retained restores + I have introduced incompatiblities with the 'log identify minor ticks' option. Check how to solve that. Side conditions: - compatibility with the modified log tick labels for small range - compatibility with extra ticks - compatibility with the manual + check whether 'clip limits' works properly if only one data point falls into the final region + add '-halt-on-error' to externalize command + handle rare case that auto limit computation leads to min > max (only possible for clip limits=false) + evaluate 'every axis plot' inside of \addplot command, even if that means a small inefficiency because it is evaluated in the \draw command as well. -> allows to get id, prefix, samples and other behaviorual options. -> attention: then, every axis plot would contain BOTH display and behavioral options; take care with key paths + \addplot plot[#1] does not use /pgfplots as search path + 'every axis plot' does not use /pgfplots as search path + implement partial limit specification, for example 'xmin=5' -> only compute 'xmax' + check gnuplot on windows - there appear to be semicolon problems!? + again, the disabledatascaletrafo key does not seem to work correctly. Check it! X active semicolons may be a problem + [ CF: for tikzlibraryexternal : use double quotes instead of single quotes in system calls -> win32 doesn't support single quotes ] + problem with context: even simple images do not work correctly. Why does the example work!? + table package: 'array' required for some examples -> document + handle 'nan' and +-inf in plots + 'every axis plot post' is not reflected in legend (at least not properly) + plot function: incompatibility with 'german' package and " catcodes + improve error recovery + grid lines and tick lines can obscure the axis lines, especially when used with different colors. -> draw axis lines on top of tick/grid lines!? Or more generally: change drawing sequence to 1. grid lines 2. tick lines 3. axis lines 4. tick labels? - extra ticks can be disabled by the tick special cases for axis lines (when two axis lines cross each other) + eliminate any public reference to the '\\'-lists. They are inconsistent with PGF. + use '{}' for sci 'e' style - looks better + the tick scale labels are inadequate. 1. Formatting 2. maybe they should be disabled at all!? + specifying axis limits for X should also limit those for Y (some sort of clipping) 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!? + the new \pgfkeys framework: + I have re-implemented all options with \pgfkeys. this allows styles and mixing of TikZ/pgfplots options. + BUG: if someone provides FULL keynames, the method WILL FAIL. + the style= option fails. + the 'x=' and 'y=' options fail. + every option which exists in both, pgf and tikz, will fail! + 'legend style' fails + the 'legend style, grid style, x label style etc. options' test fails + axis limits of zero width are not fixed causing division by zero + ytick=\empty is broken again :-( + if a logplot has very small axis ranges, only ONE tick label will be placed. Thats not enough. In such a case, tick labels should be placed at MINOR TICKS [2-9]*10^i. BTW: if someone places tick marks at [1-9]*10^i, the minor ticks should NOT be disabled. Instead, tick positions should be RECOGNISED AS MINOR TICKS (which is not that simple). + die legend[font=] variable ist doch dasselbe wie in dem tikzstyle zu legenden, oder? warum funktioniert es dann anders? + implementiere enlargelimits fuer log-achsen + markers werden rausgeclipped, wenn die achsen TIGHT sind. + man kann keine leeren listen an tick labels uebergeben! + width/height produziert NICHT die gewuenschte breite. Man sollte ne zusatzoption haben, die die labels grundsaetzlich NICHT beruecksichtigt. X Fix the scaling estimations. Problem: I don't know sizes of labels, legends, titles and tick labels. Idea: -Create a temporary picture \hbox{% \begin{tikzpicture}[xshift=...,yshift=...] % skaliere auf (0,0)--(1,1) \draw (0,0) rectangle (1,1) plaziere labels + legende + vllt. ein tick auf jede achse (?) \end{tikzpicture} }% - measure and remember its size - throw it away -> 9.2.2008: ATTEMPT FAILED. Reasons: 1. it is not possible to place a tikzpicture into a tikzpicture. And it can't be because Tikz updates bounding box parameters GLOBALLY. 2. I could use a combination of - scope, - the 'current bounding box' node, - \pgfpointanchor{current bounding box}{ anchor name }, - drawing commands for labels,legend etc. Effect: bounding box is determined correctly. BUT: - bounding box of real picture may be affected, - every output is drawn because nodes can't be 'thrown away'. At least I do not know how. + enlargelimits muss RELATIV nicht ABSOLUT gemacht werden. + es gibt einen fehler in der achsen skalierung, wenn man sehr grosse limits hat (normale achsen) + default ticks muessen besser an achsenlimits angepasst werden -> bei sehr grossen oder sehr kleinen limits schlaegt die derzeitige einschraenkung der step sizes fehl + addplot plot coordinates { (235 , 43252) } ^ funzt nicht wegen dem leerzeichen vor dem komma X verschiebung des ylabels ist komisch, wegen der rotate option ------------------------------------------------------------- FEATURES ------------------------------------------------------------- + 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 - time, - date, - strings, - ... and K maps this transparently to numbers. Then: *all* input is given in K, and 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 as the options which are affected, 'xlabel style' 'title style' etc. My current naming scheme used the name of the 'every style' which suffer from backwards compatibility with xkeyval... :-( - maybe it is possible to eliminate a lot of key macros to save string space? Those family macros can be optimized (sure ?). - provide access to axis limits and data bounding box. - It would be useful to get access to axis coordinates, for example in 'circle (XXX)' + axis equal option - consider 'plot image[xmin=,xmax=,ymin=,ymax=] {}; -> load external plot image!? Only useful for matlab, if matlab would allow 100% control over bounding box. Unfortunately, it doesn't. - allow extended arguments inside of create column + is it possible to create a *real* linked list? It should have the following features: 1. O(1) push/pop operations 2. O(N) copy() 3. O(N) convert to macro list 4. O(N) traversal/loop + introduce \label and \ref for legend entries? + optimize tikz-interface + optimize macro-append issue from O(N^2) time to O(N) + create a \pgfmathfloattosci method and use that for the numerics in table package X re-implement 'dec sep align' of table package natively, not as high-level style. + It is not (easily) possible to replace single entries of tables with '-'. (for example: gradient columns) + create a \pgfmathfloattosci method and use that for the numerics in table package - check whether the new floating point routines can be used to REALLY setup a linear map DATA RANGE -> DISPLAY RANGE 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] add an 'every plot mark' option and adjust 'mark options' accordingly + document the 'external' library of tikz (CVS only). + group 'All supported styles' section by content + allow arrow heads or other axis line styles + styles for axis lines are missing + for outer axis lines: introduce option 'separate axis line paths' if one wants to use arrow heads + set default styles for non-boxed axis labels + label positions for centered axis lines + tick scale labels + tick align versus label positions + think about axis label placement. Possibilities: - on the same side as tick labels. -> should be move away in normal direction -> should avoid problems with tick scale labels - opposite of tick labels - perhaps math style {grid=major, axis x line=middle, axis y line=center, tick align=outside} + the table package could use some sort of multicolumn feature which allows something like 'columns={A,B,A,B,A,B}' and distributes entries of input columns A and B equally to output columns. + TDS directory structure is not completely correct. Should be everything under directory 'pgfplots': $package = "pgfplots"; &SYSTEM ("$MV README ext_scripts test doc/generic/$package/"); &SYSTEM ("$MV generic tex/generic/$package/"); &SYSTEM ("$MV context latex plain tex/"); and context files should be in tex/context/third/pgfplots/... doc/context/third/pgfplots/... (reference: mail conversation with Karl Berry) + automatic disabling of enlargelimits when axis lines are not drawn as a box + copy my personal' homepages short images to pgfplots website + interrupt single plots at discontinuities (for example tan(x)) -> don't draw from +infty to -infty - optimize plot expression + optimize tick generation code for speed + alias 'axis x line=middle' and 'axis x line=center' + an option which contains legend ENTRIES? + 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 grid lines to: {thin, black!25} ? X implement an axis as path-command + implement proper anchors + provide simple options for useful bounding box truncations + Maybe I could perform a restore of the current bounding box at the END of an axis. Restore means: restore to the setting BEFORE the axis. + I could create a node which can be referenced and which has the axis' size [ That touches another open problem, see below] + I could use the new 'local bounding box' option of PGF to restrict the bounding box to the axis' size + I also need some sort of number style for log-tick-labels. + move math mode shifts into \prettyprintnumber implementation. + allow the '-plot' commands. It would be a cool feature if '(FIRST_X,0)' could be inserted as move-to operation before every plot. -> one could make funny features with 'fill' in plot styles. - make the legend code more general: allow \addformattedlegendentry{ \node{hallo} \nextcell \node{foo} \nextcell #1} where #1 is the auto-generated small plot-spec image. One could also provide '#2' as just the current plot spec OPTIONS. + document 'legend plot pos' option + there are some clipping paths in the tick-placement loop which can be replacement with simple \ifdim's. I guess clipping is not the cheapest operation. - remember unfiltered (non-logarithmized) input ticks with \listnew and provide them like '\tick' during ticklabel typesetting + improve tick placement (more) systematically + provide auto tick labels at 5*i if appropriate + implement the legend as tikz-matrix -> width computation works correctly (there is a bug with font scaling) + provide tick labels as a list like axis[tick labels={A,B,1,4,5,$\frac 12$}] -> convert to \listnew, use listpopfront to access elements + provide options for log plot tick formatting: 10^0.703 vs fixed point format + I could provide a global coordinate transformation + I could try to use the plot-stream framework of PGF directly instead of using the 'plot coordinates' command of tikz. Advantage: would be faster. And the additional features can't be used anyway because of my own number parsing routines... + rename manual.pdf to pgfplots.pdf -> allows texdoc pgfplots + alignment: vertikal kann ich jetzt mit baseline. Kann ich horizontales alignment an (0,0) hinbekommen? + axis hide option ? macht das sinn? + legende anders formatierbar? - ausserhalb des (und isoliert von dem) plots? + horizontal? + grid lines + minor + major -> einfach als verlaengerung der kleinen tick lines - es gibt scheinbar in PDF viewern die moeglichkeit, fuer den Druck ein anderes dokument/dokumentteile zu verwenden als fuers Bildschirmbetrachten (draft-package bspw?). Kann man das nutzen, um sowohl farbige als auch S/W-plots zu generieren? -> pruefe draftcopy paket + koennte man den kram auch aus (grossen) tabellen rauslesen? Also sowas wie "plot X versus Y aus file Z"? -> DEBUG! Ideen: + abstrakte datenstruktur als liste von spalten, eine spalte ist ne liste von nummern + einlesen: + zeilenweise, haengt an die jeweiligen spalten mit \listpushback coordinaten dran + read first line as header (optionally my $flags line for column formatting advice) + read just strings, no parsing - optimal: '\t' as separator. How can I teach TeX to use '\t' as separator!? + would allow + \addplot plot table[x=X,y=Z] {\table} and + \typesettable[columns=...,format=sci,...,formatting options=...] {\table} + implementation: simple run through column lists -> CONSISTENT data representation, powerful display options + man sollte \addplot mit '+[OPTIONEN]' starten koennen. + ich sollte das enlargelimits deaktivierbar machen! vllt. auch ne option 'tight' + automatisches tick-platzieren koennte verbessert werden -> insbesondere fuer normale plots + fehlerbars waeren nett + baseline option, die die linke unter ecke als '(0,0)' koordinate annimmt. Wuerde generell sinn machen, oder? + ich haette sehr gerne ein Skript, dass zu jeder figure ein eps und/oder pdf macht, dass dann bitte schoen ordentlich includiert wird. -> see tikzexternal june 2008 + passe bounding box und x/y-skalierung "sinnvoll" an. + mache ne option "width=" die die GESAMTbreite angibt. + mache "height" option + belege width und height defaultmaessig sinnvoll + ueberlege ein sinnvolles gesamt-skalierungs-konzept. Das, was ich jetzt gebaut habe, mit 'x=SCALE' und/oder 'y=SCALE' ist nicht ausgereift und eher verwirrend. sowas macht man wohl besser mit pgf-skalierungen! + Die 'x=' und 'y=' optionen sollten direkt in setxvec reingeschrieben werden, ohne schwachfug mit skalierung! + wenn ich 'width=BLA' angebe, wird automatisch 'y=1cm' angenommen. Das ist unintuitiv; man erwartet eher, dass defaultheight im aspect ratio mitskaliert wird. + Nur mit der 'x=' bzw. 'y=' option sollte es NACH AUSSEN moeglich sein, direkt einfluss auf die koordinaten zu nehmen. + entscheide automatisch, ob der abstand zwischen ticks an die skalierung angepasst werden sollte. + [xy]min = auto -> berechne die werte numerisch Ideen: + verzoegere das malen der Achse bis \end{axis} + in jedem \addplot: ich koennte irgendwie pruefen, ob ich 'plot coordinates' habe. Sobald ich diesen modus erkannt hab, kann ich koordinate fuer koordinate parsen und jeweils min/max bilden. + ich muesste dann noch den befehl in einem makro konserieren, sodass er spaeter, nach dem verzoegerten achsen malen kommt. OFFEN: was passiert, wenn NICHT plot coordinates benutzt wird? Vllt. die 'domain' variable abfragen? -> jedenfalls koennte ich mir da durchaus was ueberlegen! + [xy]tick = auto in abhaengigkeit von [xy]mode: zeige ticks von floor(xmin)...ceil(xmax) + mache styles: + every plot + every axis (?) + gebe eine liste von verfuegbaren linestyles an, durch die mit jedem plot-befehl durchgecykled werden kann + option, minor ticks ein/auszuschalten + option, die X/Y-Achsen anders zu formatieren. Moeglichkeiten: + Kasten drumrum + je eine Linie mit Pfeil am Ende + Achse nach rechts oder so + aendere die das \addplot makro derart, dass beliebige plot-moeglichkeiten folgen koennen \addplot[OPTIONS] plot coordinates {...}; -> das \addplot ersetzt gewissermaßen das \draw