diff options
author | Karl Berry <karl@freefriends.org> | 2010-09-22 00:20:49 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-09-22 00:20:49 +0000 |
commit | 3b9efd36d9aa093492744a6c328c767767a5825e (patch) | |
tree | cc36f3508b58a1483f9969db9ac9e881fc643894 /Master/texmf-dist/doc/latex/pgfplots | |
parent | 8c9710e1dff6259e1a3c50d9ff052729654fc492 (diff) |
pgfplots (6aug10)
git-svn-id: svn://tug.org/texlive/trunk@19839 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex/pgfplots')
15 files changed, 2025 insertions, 2784 deletions
diff --git a/Master/texmf-dist/doc/latex/pgfplots/ChangeLog b/Master/texmf-dist/doc/latex/pgfplots/ChangeLog index ff3097dc1a4..58e4a627321 100644 --- a/Master/texmf-dist/doc/latex/pgfplots/ChangeLog +++ b/Master/texmf-dist/doc/latex/pgfplots/ChangeLog @@ -1,5 +1,21 @@ -2010-07-14 Christian Feuersaenger <ludewich@users.sourceforge.net> +2010-08-05 Christian Feuersaenger <ludewich@users.sourceforge.net> + - RELEASED VERSION 1.4.1 Changes since 1.4: + - Improved compatibility with windows gnuplot and logarithmic scaling + +2010-07-27 Christian Feuersaenger <ludewich@users.sourceforge.net> + - activated math parser for 'view' arguments and improved docs on 'view' + +2010-07-22 Christian Feuersaenger <ludewich@users.sourceforge.net> + - Fixed bug: the windows version had problems with gnuplot when used with + logarithmic scales: + - gnuplot 4.2 does not identify itsself, causing the new check to bail + out with error + - gnuplot 4.4 worked, but not if the temporary gnuplot fails contains + a directory. + Both is fixed now. + +2010-07-14 Christian Feuersaenger <ludewich@users.sourceforge.net> - RELEASED VERSION 1.4 Release notes: - Added support for detached legends and detached colorbars - ybar (and similar plots) can now be mixed with other plot types diff --git a/Master/texmf-dist/doc/latex/pgfplots/TeX-programming-notes.pdf b/Master/texmf-dist/doc/latex/pgfplots/TeX-programming-notes.pdf Binary files differindex fb1a4b62ce7..84d7c571922 100644 --- a/Master/texmf-dist/doc/latex/pgfplots/TeX-programming-notes.pdf +++ b/Master/texmf-dist/doc/latex/pgfplots/TeX-programming-notes.pdf diff --git a/Master/texmf-dist/doc/latex/pgfplots/bugtracker/minimal_0.pdf b/Master/texmf-dist/doc/latex/pgfplots/bugtracker/minimal_0.pdf Binary files differnew file mode 100644 index 00000000000..4332cb3ccbe --- /dev/null +++ b/Master/texmf-dist/doc/latex/pgfplots/bugtracker/minimal_0.pdf diff --git a/Master/texmf-dist/doc/latex/pgfplots/bugtracker/minimal_0.tex b/Master/texmf-dist/doc/latex/pgfplots/bugtracker/minimal_0.tex new file mode 100644 index 00000000000..7465efba4b0 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pgfplots/bugtracker/minimal_0.tex @@ -0,0 +1,7 @@ + +\documentclass{article} + +\begin{document} +Hallo Welt +\end{document} + diff --git a/Master/texmf-dist/doc/latex/pgfplots/cartesian_phase_diagram.pdf b/Master/texmf-dist/doc/latex/pgfplots/cartesian_phase_diagram.pdf Binary files differnew file mode 100644 index 00000000000..1557c37bee4 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pgfplots/cartesian_phase_diagram.pdf diff --git a/Master/texmf-dist/doc/latex/pgfplots/gibbs_phase_diagram.pdf b/Master/texmf-dist/doc/latex/pgfplots/gibbs_phase_diagram.pdf Binary files differnew file mode 100644 index 00000000000..93a35341499 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pgfplots/gibbs_phase_diagram.pdf diff --git a/Master/texmf-dist/doc/latex/pgfplots/gnuplot/pgfplots_exp.vrs b/Master/texmf-dist/doc/latex/pgfplots/gnuplot/pgfplots_exp.vrs new file mode 100644 index 00000000000..8cea9808f2c --- /dev/null +++ b/Master/texmf-dist/doc/latex/pgfplots/gnuplot/pgfplots_exp.vrs @@ -0,0 +1 @@ +gnuplot 4.2 patchlevel 6 diff --git a/Master/texmf-dist/doc/latex/pgfplots/pgfplots.pdf b/Master/texmf-dist/doc/latex/pgfplots/pgfplots.pdf Binary files differindex ffa57bd68ab..62fc07cd275 100644 --- a/Master/texmf-dist/doc/latex/pgfplots/pgfplots.pdf +++ b/Master/texmf-dist/doc/latex/pgfplots/pgfplots.pdf diff --git a/Master/texmf-dist/doc/latex/pgfplots/pgfplots.reference.3dconfiguration.tex b/Master/texmf-dist/doc/latex/pgfplots/pgfplots.reference.3dconfiguration.tex index a34e70054e5..e11c922d100 100644 --- a/Master/texmf-dist/doc/latex/pgfplots/pgfplots.reference.3dconfiguration.tex +++ b/Master/texmf-dist/doc/latex/pgfplots/pgfplots.reference.3dconfiguration.tex @@ -40,6 +40,22 @@ This section described keys which are used to configure the appearance of three \end{axis} \end{tikzpicture} \end{codeexample} + + The |view| is computed as follows. The view is defined by two rotations: the first rotation uses the \meta{azimuth} angle to rotate around the $z$ axis. Afterwards, the view is rotated \meta{elevation} degrees around the \emph{rotated} $x$ axis (more precisely, it is rotated $-$\meta{elevation} degrees). The resulting transformed $x$--$z$--plane is the viewport, i.e.\ the view direction is always the transformed positive $y$ axis. + + The |view| argument is assignment compatible with matlab (tm), i.e.\ you can use + + |[h,v] = view| + + \noindent in matlab and pack the resulting arguments into \PGFPlots\footnote{In case it does not work, try \texttt{h} and \texttt{-v} in \PGFPlots.}. + + If you work with |gnuplot|, you can convert the view arguments as follows: the |gnuplot| command + + |set view v,h| + + \noindent is \emph{equivalent} to |view={h}{90-v}|. For example, the default |gnuplot| configuration |set view 60,60| is equivalent to |view={60}{30}| in \PGFPlots. + + The |view| is (currently) always an orthogonal projection, no perspective is possible, yet. \end{pgfplotskey} \begin{pgfplotskeylist}{view/az=\marg{azimuth},view/h=\marg{azimuth} (initially 25)} diff --git a/Master/texmf-dist/doc/latex/pgfplots/pgfplots.tex b/Master/texmf-dist/doc/latex/pgfplots/pgfplots.tex index 1e4ce7cbf4d..e32eac2e7af 100644 --- a/Master/texmf-dist/doc/latex/pgfplots/pgfplots.tex +++ b/Master/texmf-dist/doc/latex/pgfplots/pgfplots.tex @@ -134,7 +134,7 @@ This release provides a lot of improvements which can be found in all detail in This will be fixed with \PGF\ $>2.00$. - \item Starting with \PGFPlots\ $1.1$, |\tizkstyle| should \emph{no longer be used} to set \PGFPlots\ options. + \item Starting with \PGFPlots\ $1.1$, |\tikzstyle| should \emph{no longer be used} to set \PGFPlots\ options. Although |\tikzstyle| is still supported for some older \PGFPlots\ options, you should replace any occurance of |\tikzstyle| with |\pgfplotsset{|\meta{style name}|/.style={|\meta{key-value-list}|}}| or the associated |/.append style| variant. See section~\ref{sec:styles} for more detail. \end{enumerate} diff --git a/Master/texmf-dist/doc/latex/pgfplots/pgfplotstable.pdf b/Master/texmf-dist/doc/latex/pgfplots/pgfplotstable.pdf Binary files differindex c88e6098e8f..c5a2649be5f 100644 --- a/Master/texmf-dist/doc/latex/pgfplots/pgfplotstable.pdf +++ b/Master/texmf-dist/doc/latex/pgfplots/pgfplotstable.pdf diff --git a/Master/texmf-dist/doc/latex/pgfplots/pgfplotstodo.pdf b/Master/texmf-dist/doc/latex/pgfplots/pgfplotstodo.pdf Binary files differnew file mode 100644 index 00000000000..95b5d72bc56 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pgfplots/pgfplotstodo.pdf diff --git a/Master/texmf-dist/doc/latex/pgfplots/pgfplotstodo.tex b/Master/texmf-dist/doc/latex/pgfplots/pgfplotstodo.tex new file mode 100644 index 00000000000..8711ef082e8 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pgfplots/pgfplotstodo.tex @@ -0,0 +1,1941 @@ +\documentclass[a4paper]{article} + +\usepackage{bugtracker} +\usepackage[intlimits]{amsmath} +\usepackage{amssymb} +\usepackage{amsfonts} +\usepackage{hyperref} +\hypersetup{pdfborder={0 0 0}} +% \usepackage{amsthm} + +% Ein Haekchen aus pifont: +\usepackage{pifont} +\newcommand{\ok}{\ifmmode\text{\ding{51}}\else \ding{51}\fi} +\newcommand{\scissor}{\ifmmode\text{\ding{33}} \else \ding{33}\fi} + +\declarebugtrackeritem{pgfbug}{1} +\bugtrackerset{ + prefix=bugtracker/minimal_, +} + +% Fix overful hboxes automatically: +\tolerance=2000 +\emergencystretch=15pt + +\author{Christian Feuers\"anger} +\title{Todolist for PGFPlots} + +\begin{document} +\maketitle +\tableofcontents +\section{Tests} + +last test verifications: + +\begin{tabular}{llll} + & pgf CVS & pgf 2.00 &pgf 2.00+compat=default\\ +pgfplotstests & for 1.4 & for 1.4 &2009-12-30 \\ +manual & for 1.4 & for 1.4 & \\ +pgfplotstable.pdf & for 1.4 & for 1.4\\ +example latex & for 1.4 & 2009-12-30 \\ +example context & for 1.4 & 2009-12-30 \\ +example plain tex & for 1.4 & 2009-12-30 \\ +tests context & for 1.4 &\\ +\end{tabular} + +\section{Components planned for version 1.5} +\begin{itemize} +\item hist 98\% (complete UI?) +\item quiver 95\% (test, shall I create an UI for autoscaling of arrows?) +\item contours 95\% ready. + add "labels=if less than X" +\item[perhaps] contour filled 10\% ready +\item patch plots lib: 95\% + + \begin{itemize} + \item + implement displacement input + \item bug for quad rectangle in middle point + \item perhaps 1d quadratic/cubic patches (simple)? + \end{itemize} +\item polar axes: 70\% ready + \begin{itemize} + \item undocumented + \item missing feature: input of cartesian coords + \item special cases (?) + \end{itemize} +\item ternary: 80\% ready + \begin{itemize} + \item but there are still quite a lot of feature request concerning them + \item konnodalplots (? implement in new branch to check difficulty) + \end{itemize} +\item smith charts: 0\% ready, but implementation should be simple with what I have + now + + $\rightarrow$ implement in new branch +\item internal coordmath framework: 80\% ready, but not used everywhere and + undocumented +\item layer graphics support for axes 0\% (should be easy, implement in new branch) +\item view configuration: + \begin{itemize} + \item document gnuplot import/export + \item view matrix input? + \end{itemize} +\item check 'empty lines' feature -> should have compat mode +\item new public axis API is 90\% complete: + documentation is missing + log scaling is difficult, still +\item Bugfixes + \begin{itemize} + \item what about 'scale' transformations? Are they correct? + \end{itemize} +\end{itemize} + +\begin{bugtracker} +\begin{bug} +Test fuer bugtracker: +\begin{minimal} +\documentclass{article} + +\begin{document} +Hallo Welt +\end{document} +\end{minimal} +\end{bug} +\end{bugtracker} + +\section{Documentation todo} +\begin{bugtracker} +\begin{doctodo}[-] + release notes: + mention improvements of 'shader=interp' +\end{doctodo} + +\begin{doctodo}[-] + new 'output cs' feature (when it is finished) +\end{doctodo} + +\begin{doctodo}[+] + There is a typo on section 4.5.12: "As for for dimensional patch plots " +\end{doctodo} + +\begin{doctodo}[-] + quiver: the tests have a further pretty example where quiver is on top of + a surf, attached to z =2 or so. +\end{doctodo} + +\begin{doctodo}[+] + document 'shader=faceted interp' +\end{doctodo} + +\begin{doctodo}[-] + document 'mesh/type' +\end{doctodo} + +\begin{doctodo}[+] + document the 'plot graphics/points' feature. +\end{doctodo} + +\begin{doctodo}[-] + try a bar plot with individually shaded bars +\end{doctodo} + +\begin{doctodo}[+] + document 'contour prepared', 'contour external' and 'contour gnuplot'. +\end{doctodo} + +\begin{doctodo}[-] + contour external: Do not forget the \verb|\", \'| etc special handling . +\end{doctodo} + +\begin{doctodo}[-] + contour: document 'labels over line' style +\end{doctodo} + +\begin{doctodo}[-] + contour: a change label dist +\end{doctodo} + +\begin{doctodo}[-] + contour: document the special handling of "point meta". +\end{doctodo} + +\begin{doctodo}[+] + clickable: + document 'popup size' and its variants + document `clickable coords size' + document 'richtext' and the formatting things + document \verb|\n| and friends +\end{doctodo} + +\begin{doctodo}[+] + document ternary lib + + do not forget 'cartesian cs' and its applications +\end{doctodo} + +\begin{doctodo}[-] + document frac whole format +\end{doctodo} + +\begin{doctodo}[-] + document /pgfplots/empty line +\end{doctodo} + +\begin{doctodo}[-] + document 'clickable coords' and 'clickable coords code' features +\end{doctodo} + +\begin{doctodo}[-] + document 'execute at begin axis' and its new variants +\end{doctodo} + + There's a tiny typo in pgfplots manual: + \verb| \addplot table[x index=0,y index=0,header=false]| + on page 18. The second index should be 1, not 1. + +\begin{doctodo}[-] + document how to plot against the coordindex +\end{doctodo} + +\begin{doctodo}[-] + document the new 'getcolumnbyname={create col/....}' feature +\end{doctodo} + +\begin{doctodo}[+] + document linear regression +\end{doctodo} + +\begin{doctodo}[-] + document how to identify the source of "dimension too large" errors: + tracingstuff. +\end{doctodo} + +\begin{doctodo}[-] + document how to fix dimension too large problems: restrict to domain for + example +\end{doctodo} + +\begin{doctodo}[-] + colorbar styles are not consistent between docs and code +\end{doctodo} + +\begin{doctodo}[-] + It seems as if the AMS command \verb|$\text{\ref{ref:to:a:plot}}$| instantiates the + \verb|\ref| at least four times. Document somehow that it is better to use '\verb|\hbox|' + instead +\end{doctodo} + +\begin{doctodo}[-] + pgfplotstable: show how to use '\verb|\begin{longtable}|' +\end{doctodo} + +\begin{doctodo}[-] + clickable lib: + I have the impression that acroread fires warnings only for the manual - not always when the clickable lib is used. Why!? +\end{doctodo} + +\end{bugtracker} + + +\section{Bugs in PGF/TikZ} +\begin{bugtracker} + +\begin{pgfbug}[-] + external bug: +\begin{verbatim} +\documentclass[ + pagesize=auto, % 1 + ]{scrbook} +\usepackage{tikz} + \usetikzlibrary{external} + \tikzexternalize +\begin{document} + \KOMAoption{twoside}{semi} % 2 + test + \tikz \draw (0,0) circle (3pt); +\end{document} +\end{verbatim} +\end{pgfbug} + +\begin{pgfbug}[-] + consider a matrix style which applies only to the outer matrix node style + (see feature request + \verb|https://sourceforge.net/tracker/?func=detail&atid=1060657&aid=3019259&group_id=224188| + ) +\end{pgfbug} + +\begin{pgfbug}[-] + make assignments to \verb|\pgf@x| and \verb|\pgf@y| always \verb|\global| +\end{pgfbug} + +\begin{pgfbug}[-] + implement \verb|\pgfmathfloattocount| +\end{pgfbug} + +\begin{pgfbug}[-] + external lib: think whether it is possible to provide the real jobname + without explicit user input. Idea: transport it as TeX code argument to pdflatex +\end{pgfbug} + +\begin{pgfbug}[-] + provide '$\times$' or more general formatting rules to number printer +\end{pgfbug} + +\begin{pgfbug}[-] + code 2 args doesn't work correctly with spaces between the arguments!? +\end{pgfbug} + + +\begin{pgfbug}[+] + external lib: implement \verb|\tikzpicturedependsonfile#1| +\end{pgfbug} + +\begin{pgfbug}[+] + in pgfplots: invoke \verb|\tikzpicturedependsonfile|. + perhaps the plot-from-table-struct should also use it. +\end{pgfbug} + +\begin{pgfbug}[+] + external lib: 'list and make' does not work together with \verb|\include| (aux files!) or other file writing things -- at least not if one tries to do that in parallel. +\end{pgfbug} + +\begin{pgfbug}[+] + consider the "plot function" patch from Andy Schlaikjer +\end{pgfbug} + +\begin{pgfbug}[+] + it seems fadings don't work correctly with externalization!? +\end{pgfbug} + +\begin{pgfbug}[-] + include addition of Christophe Jorssen for MD5 checksums in external lib +\end{pgfbug} + +\begin{pgfbug}[+] + write new sub-package 'pgfmanual.sty' which contains a good user interface to the manual styles, environments and all that. +\end{pgfbug} + +\begin{pgfbug}[+] + external lib: catcode changes inside of pictures do not work properly. +\end{pgfbug} + +\begin{pgfbug}[-] + the fpu can't be used inside of paths. That should be fixed. + $\leadsto$ the problem is that paths may use \verb|\pgfmath...| routines directly. + $\leadsto$ this should work! At least with the public math macros \verb|\pgfmathadd|. + The \verb|\pgfmathadd@| might be implemented differently. +\end{pgfbug} + +\begin{pgfbug}[+] + in the manual, the first two arguments of + pgfqkeysactivatesinglefamilyandfilteroptions were inverted. +\end{pgfbug} + +\begin{pgfbug}[+] + some predefined filters do not process unknown options correctly +\end{pgfbug} + +\begin{pgfbug}[+] + external lib in pgf: think whether 'empty image extension' is a bug or a + feature. + $\leadsto$ feature of \verb|\pgfimage|! Otherwise it wouldn't be possible to provide an extension! + $\leadsto$ bug for external lib which never uses extensions! +\end{pgfbug} + +\begin{pgfbug}[-] + fix landscape bug (pdflscape) in external lib (PGF) +\end{pgfbug} + +\begin{pgfbug}[+] + the pgf math parser has wrong precedence for '-' prefix op: + \verb|exp(-x^2)| is wrong. +\end{pgfbug} + +\begin{pgfbug}[-] + pack the default 'system call' for dvips etc into drivers! +\end{pgfbug} + +\begin{pgfbug}[-] + active '|' characters result in compilation bugs (\verb|\usepackage{program}|) +\end{pgfbug} + +\begin{pgfbug}[-] + 'text height=1em' realisieren mit [node font units]1em +\end{pgfbug} + +\begin{pgfbug}[-] + compatiblity code todo: + - the example for plot graphics (with view=0{90}) doesn't work. + $\leadsto$ that's the '\verb|exp(0-x^2)|' bug which is still in pgf 2.00! +\end{pgfbug} + +\end{bugtracker} + + +\section{Bugs in PGFPlots} + +\begin{bugtracker} +\begin{bug}[-] + the axis line combination styles can't be adjusted for 3D because they are + evaluated too early. +\end{bug} + +\begin{bug}[-] + external lib + dvi/ps + windows: it seems the ';' doesn't work; use '\&' to + separate commands +\end{bug} + +\begin{bug}[-] + check y tick scale label for 2nd y axis +\end{bug} + +\begin{bug}[-] + foreach variants in pgfplots accept only one parameter +\begin{verbatim} +% \foreach \x/\y in {1/a, 2/b, 3/c} +% {\node at (axis cs:0,\x) {\y};}% % doesn't work +% \pgfplotsforeachungrouped \x/\y in {1/a, 2/b, 3/c} +% {\node at (axis cs:0,\x) {\y};}% % doesn't work +\end{verbatim} +\end{bug} + + + + +\begin{bug}[-] + groupplots + extra braces or foreach are incompatible. +\end{bug} + +\begin{bug}[-] + the 'xtick' syntax accepts only numbers, not even constant expressions are + possible (and 'pi' is even more complicated). +\end{bug} + +\begin{bug}[-] + document INS 671 does not compile with pgfplots 1.4 and pgf 2.00 +\end{bug} + +\begin{bug}[-] + numplotspertype and forget plot and ybar interval yields errors. +\end{bug} + +\begin{bug}[-] + expression plotting and empty 'y' results in errors. Perhaps it would be + better to handle that explicitly somehow? + (occurs for hist when one input line is empty) +\end{bug} + +\begin{bug}[-] + view normal vector does not correctly respect plot box ratio and x dir +\end{bug} + +\begin{bug}[-] + plot box ratio has a strange input format (compare with unit vector ratio). +\end{bug} + +\begin{bug}[-] + clickable and Windows Acrobat Reader 9 has been reported to fail +\end{bug} + +\begin{bug}[-] + /pgfplots/samples at and /tikz/samples at work on the same axe. Tantau says that this key support foreach statement and thus the dotes notation. However, when I want to use two or more different dots notation within pgfplots, latex crashes ! +Here is an example which clarify this issue : +\verb|\addplot+[mark=none,variable={\t}, samples at = {\foreach \x in {0,10,...,180,200,...340} {\x, }360}] ({sin(t*2)}, {cos(t)}); | +\end{bug} + +\begin{bug}[-] + potential incompatibility: clickable and external. The clickable lib writes + into pgfplots.djs which might cause multithreaded problems. +\end{bug} + +\begin{bug}[-] + groupplots: mixing 2d/3d in one groupplot doesn't reset 'zmin,zmax' ? + +\end{bug} + +\begin{bug}[-] + 'clip=false' does not disable marker clipping! +\end{bug} + + +\begin{bug}[-] + multiple ordinates: grid lines are drawn on top of function plots; that's bad. +Check: + I think you have to change the process line previousely invoked, and make the axes generation at the end : +1. generating adequate grid -$\leadsto$ 2. plotting functions -$\leadsto$ 3. creating axes, tick nodes... +You can take a minute look at figure 1 @ "The addplot Command: Coordinate Input" section 4.2 p 19. +and you can remark that colour filling overlaps x- and y-axis ! So I suggest that you use "excute at end picture=<axis generation code>" tikz option or similar to avoid this issue. +\end{bug} + +\begin{bug}[-] + 3D axes: it is difficult to get an 1:1 correspondence to tikz. +\end{bug} + +\begin{bug}[-] + 3D axes: providing three unit vectors is not sufficient, one also needs to set + 'view={}{}'. That should be done automatically. + +- 3D axes: Providing three unit vectors manually yields incorrect axis + initialisation. +\end{bug} + +\begin{bug}[-] + 3D axis: provide support for manual axis configuration, + - depth (n vector), + - foreground/background, + - tick label axes, + - ... +\end{bug} + +\begin{bug}[-] + Patch plots: directly transform cdata. Should simplify interpolation during + refine/triangulation etc. and shouldn't make a difference otherwise. +\end{bug} + +\begin{bug}[-] + manual errors of given pgfplots\_unstable version: + 94 2.5.12 \verb|addplot+[patch] --> addplot3+[patch]| +162 "xmode, ymode, zmode" and "x dir, ..." + come again on page 177 +\end{bug} + +\begin{bug}[-] + don't loose \verb|\ref|'s when externalizing + I'll provide a minimal later +\end{bug} + + +\begin{bug}[-] + incompatibility pdfpages (most recent version), MikTeX and tikz external lib + (something with shipout routine) +\end{bug} + +\begin{bug}[-] + plot graphics: \verb|\ref| legend doesn't work properly +\end{bug} + +\begin{bug}[-] + french babel and colorbars are not fully compatible. The problem is that + colorbars use '\verb|\addplot| graphics {};' with a fixed catcode for the ';' -- + which might lead to problems. +\end{bug} + +\begin{bug}[-] + markers should not be drawn on top of everything else. Always restore the + clipping region for each plot. + +\end{bug} + +\begin{bug}[-] + mesh/patch plots: + - jump thing + z buffer=sort probably doesn't work +\end{bug} + +\begin{bug}[-] + ternary axes: the 'marker clipping' doesn't work (naturally) +\end{bug} + +\begin{bug}[-] + polar axes: + \begin{itemize} + \item \ok is wrong since 'near ticklabel' anchor uses pointunitx which is not correctly initialised for polar axes. + \item axis equal + \item \ok data scaling needs to be disabled for X axis. + \item \ok auto tick labels work only for the case of disabledatascaling +\end{itemize} +\end{bug} + +\begin{bug}[-] + contour: + the table/meta=2 default is wrong. +\end{bug} + +\begin{bug}[-] + OK : 'every node near coord/.append style={scale=0.7}' + NOT OK: 'every node near coord/.append style={scale=0.7},ybar' + -$\leadsto$ sequence of shift and scale matters ... +\end{bug} + + + +\begin{bug}[-] + dimension too large sanity checking: TeX uses the maximum value instead. + Perhaps that can be checked? +\end{bug} + +\begin{bug}[-] + view={0}{90} and enlargelimits=auto is not always satisfactory: it disables enlarged + limits, but for contours, I'd like to have it. + What is to do? +\end{bug} + +\begin{bug}[-] + provide remark at end document "Package pgfplots: consider using the preamble + command \verb|\pgfplotsset{compat=1.3} to improve label placement|" +\end{bug} + +\begin{bug}[-] + there are a lot of .code 2 args styles which do not support spaces between + their arguments. Fix this. +\end{bug} + +\begin{bug}[-] + contour external should allow different variations how to deal with + end-of-scanline markers. gnuplot requires empty lines; matlab doesn't deal + with them as far as I know. +\end{bug} + +\begin{bug}[-] + contour external doesn't handle explicitly provided matrix data (mesh/rows and + mesh/cols) yet. +\end{bug} + +\begin{bug}[-] + contour external doesn't handle the ordering flag correctly. +\end{bug} + +\begin{bug}[-] + the quiver/scale arrows thing might need an "auto" option. If I don't add it + now, it'll probably never work in the future. +\end{bug} + +\begin{bug}[-] + `1.23456e4;' in a log plot resulted in hard-to-read error messages. Improve + sanity checking here. +\end{bug} + +\begin{bug}[-] + the title style for 'footnotesize' is not as I want it to: it doesn't respect + the depth below the baseline. Or does it need a \verb|\strut|? +\end{bug} + +\begin{bug}[-] + avoid dimension too large errors which occur due to a data range restrictions. + Example: + data range = 0:6000 + view range = 0:1 + $\leadsto$ results in error. + But that's easy to detect! Just compute the point coordinate in float (after + the scaling is complete). Then, install a filter somewhere. perhaps an "a + posteriori" filter in the pointxyz command? +\end{bug} + + +\begin{bug}[-] + the autodetection of the '\verb|\\|' list format is buggy: it should return true if + and only if the last element is '\verb|\\|', not if '\verb|\\|' occurs inside of the + argument. +\end{bug} + + +\begin{bug}[-] + \verb|yticklabels={<list>}, extra y ticks={...}| is incompatible since the extra + ticks share the same tick typesetting routine (which, in turn, queries the + <list>). +\end{bug} + +\begin{bug}[-] + '\verb|\addplot[only marks]|' does not assign a plot mark; one needs 'mark=*' + explicitly. that's confusing... +\end{bug} + +\begin{bug}[-] + The 'text depth' in legend entries is incompatible with 'text width'. + The problem: text width is realized using \verb|\begin{minipage}[t]| + so its contents is all in the depth. Setting text depths overrides the + height! +\end{bug} + +\begin{bug}[-] + the '/pgfplots/table/.search also' is overwritten during \verb|\addplot table| with + /.search also={/pgfplots}. That's not so good. +\end{bug} + +\begin{bug}[-] + one can't provide 'disable log filter' to addplot (but it might be + interesting) +\end{bug} + +\begin{bug}[-] + FPU: atan doesn't check for unbounded inputs. +\end{bug} + +\begin{bug}[-] + unbounded inputs: improve warning messages: they should not contain low level + FPU args. +\end{bug} + +\begin{bug}[-] + the user interface to set 'tickwidth=0' for a SINGLE axis is not very good: it seems one needs 'xtick style={/pgfplots/tickwidth=0}' to do so... + $\leadsto$ can be solved if tickwidth has a family, I guess. Something like 'draw' which will not be pulled by pgfplots. But then remains a problem of key paths. + +\end{bug} + +\begin{bug}[-] + the FPU has somewhere spaces; at least it treats them differently from pgfmathparse. +\end{bug} + +\begin{bug}[-] + I have seen that 'plot table' with very large files can produce pool size problems -- even if the coordinates are all filtered away. + In other words: the code can't simply read a file and throw its contents away. + The problem appears to be some math parsing using the table/x expr and friends. + 'pool size = names of control sequences and file name' + $\leadsto$ the math parser could be improved with ifcsname +\end{bug} + +\begin{bug}[-] + axis lines and 3D: some tick lines are not drawn, see manual examples +\end{bug} + +\begin{bug}[-] + check for placement of tick scale label for compat=newest + $\leadsto$ I improved them for 2d and 3d + $\leadsto$ needs some further checks, I guess + +\end{bug} + +\begin{bug}[-] + providing zmin/xmax to an axis activates 3D mode, ok -- but lower dimensional input routines appear to fail. +\end{bug} + +\begin{bug}[-] + one can't provide 'scale' as argument to a (3d) axis +\end{bug} + +\begin{bug}[-] + getthisrow still has to be fixed +\end{bug} + +\begin{bug}[-] + it may still happen that log-axes get only *one* tick label (in my case \verb|10^{-0.2}|). That should never happen. + The range is about ymin=4.7e-1, ymax=9.5e-1 +\end{bug} + +\begin{bug}[-] + log samples in plot expression for 3D plots +\end{bug} + +\begin{bug}[-] + different log bases and gnuplot +\end{bug} + +\begin{bug}[+] + 3D gnuplot: z buffer fails (see tests) +\end{bug} + +\begin{bug}[-] + I tried placing a named coordinate inside one axis and using it in + another. It failed. + + CF: The axis is drawn inside of its own picture which will only be shifted if everything has been drawn. That will be the origin of this problem I guess + + Miraculously I can use the coordinate outside axis env. So I have + reached the following solution: +\end{bug} + +\begin{bug}[-] + the compatibility things should be enabled automatically for some parts: + - 3D + - color bars + - reversed axes +\end{bug} + +\begin{bug}[-] + plot coordinates doesn't check too well if + 1. addplot3 is used but only two coords are given + 2. addplot is given but three coordinates are provided (also for plot expression) +\end{bug} + +\begin{bug}[+] + gnuplot: set terminal table seems to be deprecated. +\end{bug} + +\begin{bug}[-] + gnuplot and 3D + $\leadsto$ I need a shared interface to prepare the required keys for expression plotting +\end{bug} + +\begin{bug}[-] + the compat things are not yet complete: I wanted to check when it is really necessary (for example if 'x dir' is used) +\end{bug} + +\begin{bug}[-] + the nodes near coords feature produces unexpected results when used together + with markers $\leadsto$ this is due to the default configuration of scatter plots. +\end{bug} + + +\begin{bug}[-] + check whether /pgfplots/ keys are processed properly in legends. This is + certainly not the case for the \verb|\label/\ref| legend! + $\leadsto$ which ones are the problem? +\end{bug} + +\begin{bug}[-] + the ybar style won't be set inside of \verb|\label{}| +\end{bug} + + +\begin{bug}[-] + axis equal for semilog plots is not correct (?) +\end{bug} + + + +\begin{bug}[-] + backwards compatibility problem: + axis descriptions can't contain /pgfplots/ styles any longer! This is a key + path issue :-( +\end{bug} + + +\begin{bug}[-] + BUG: in empty axes, '\verb|xtick=\empty|' is ignored. +\end{bug} + +\begin{bug}[-] + finish impl of ticklabel pos. + I should use the same thing for tickpos as well. + And: the default arg processing which uses ticklabel pos = tickpos needs to be + fixed. + the 2D axes are wrong. +\end{bug} + + +\begin{bug}[-] + The automatic tick labeling sometimes produces inconsistent or confusing + labels: + 1. engineering and fixed number style are mixed up. + 2. If range of an axis is so small that the labels differ only on the third + decimal, still only two decimals are used. +\end{bug} + + +\begin{bug}[-] + 3D: axis equal implementation might not be correct (at least not for view + special cases) +\end{bug} + +\begin{bug}[-] + 3D: + error bars and + stacked plots + need to be updated. +\end{bug} + +\begin{bug}[-] + the \verb|\thisrow| commands in the table package does not (always) respect aliases! +\end{bug} + +\begin{bug}[-] + interp shader is displayed transparently in evince +\end{bug} + +\begin{bug}[-] +\begin{verbatim} + 3D: the use of \addplot3 and \addplot is not sanitized properly + Possibilities: + - used \addplot when \addplot3 should have been used + - used \addplot3 where \addplot should have been used. + What can happen here!? Shouldn't this work in every case? + +- The "xtick" value is not applied unless there is a coordinate in the x range: + $\leadsto$ that's the handling of empty figures... + not working: + \begin{axis}[xtick=0] + \end{axis} + not working: + \begin{axis}[xmin=-5,xmax=5,xtick=0] + \end{axis} + not working: + \begin{axis}[xmin=-5,xmax=5,xtick=0] + \addplot coordinates { (-10, 0) }; + \end{axis} + working: + \begin{axis}[xmin=-5,xmax=5,xtick=0] + \addplot coordinates { (0, 0) }; + \end{axis} +\end{verbatim} +\end{bug} + +\begin{bug}[-] + think about basic level commands for the axis lines -- this should also allow + \pgfpathclose ! +\end{bug} + + +\begin{bug}[-] + the arguments to \verb|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). +\end{bug} + +\begin{bug}[-] + check behavior options provided to table[] and file[] and so - is that + correct? +\end{bug} + + +\begin{bug}[-] + verify that 'draw=none' works! Is something broken here? + $\leadsto$ write tests! + + it appears to be desired that (at least some) markers invoke + \verb|\pgfusepathqfillstroke| + $\leadsto$ they always 'draw', regardless of tikz color settings. + $\leadsto$ 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!? + - Possible fix: + Overwrite \verb|\filltrue \fillfalse, \drawtrue, \drawfalse|: + they should set a further boolean '\verb|\drawbooleanhasbeenset|' and + '\verb|\fillbooleanhasbeenset|'. + $\leadsto$ Replace the \verb|\pgfusepathqfillstroke| if and only if the respective + booleans have been set *explicitly*. If they are unchanged, fall back to + a "reasonable" default. + +\end{bug} + +\begin{bug}[-] + 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'. +\end{bug} + +\begin{bug}[-] + 3D case : grid lines work correctly, but they are not satisfactory. + I'd like grid lines in the background only. +\end{bug} + +\begin{bug}[-] + 3D case : tick/grid lines are on top of the axis lines. This leads to + poor quality. +\end{bug} + + + +\begin{bug}[+] + the clickable library does *not* work inside of figure environments + $\leadsto$ yes. That's fixed; was a bug in hyperref. + - I could try to re-implement it without insdljs. + Ideas: + - the document catalog's names dictionary needs to '/JavaScript + [(<arbitrary script name>) <dictionary with JS>]' entry. + The <dictionary with JS> contains document level javascript. + - it is very simple to generate these entries for my case. + Unfortunately, this may be incompatible with 'insdljs' or other tools + which write DLJS. + - I am not sure why the floating figures of TeX produce an + incompatibility here. It appears the 'hidden' flag in the form fields + are the problem - if that is the case, I'd need to reimplement the + form annotations (which could be more difficult). +\end{bug} + +\begin{bug}[-] + javascript stuff does not work if the complete figure is rotated (sidewaysfigure). +\end{bug} + +\begin{bug}[-] + javascript: incompatiblity with external library: + 1. filenames: \verb|\jobname| contains characters with incompatible catcodes and + that funny insdljs package tries to assemble macros with these + characters. + $\leadsto$ fixed; I simply use pgfplotsJS as temporary file name. + 2. the images as such have corrupted forms + $\leadsto$ Can be fixed if + \verb|\usepackage{eforms} | + is used BEFORE loading pgf. The reason: \verb|\begin{Form}| and the shipout-hackery + of the pgf externalization bite each other. + \verb|\begin{Form}| must come before the shipout hackery of pgf. + 3. \verb|\includegraphics |does not preserve PDF forms. +\end{bug} + + + +\begin{bug}[-] + the interrupt bounding box feature should still update the data bounding box. + Otherwise, transformations may fail. +\end{bug} + +\begin{bug}[-] + extra ticks can be disabled by the tick special cases for axis lines (when two + axis lines cross each other) +\end{bug} + +\end{bugtracker} + + +\section{Feature Proposals PGFPlots} +\begin{bugtracker} + +\begin{feature}[-] + bar plots: provide constant zero level? +\end{feature} + +\begin{feature}[-] + implement properly layered graphics --- especially for grid lines + should probably also respect multiple ordinates +\end{feature} + +\begin{feature}[-] + linear regression which passes through (0,0) (see mail of Stefan Pinnow) +\end{feature} + +\begin{feature}[-] + plot graphics 3D: handle the case when the first two points share the same x + (or y) coordinate +\end{feature} + +\begin{feature}[-] + hist does not allow modifications to the data range +\end{feature} + +\begin{feature}[-] + see the interesting things at + \url{http://peltiertech.com/Excel/Charts/axes.html#Broken} + broken (y) axis: remove interval [a,b] + idea: + if y<a : visualize as usual + if a<y<b : use coordinate y=a + if b<y : use coordinate y=y-(b-a) + axis: + \begin{itemize} + \item + compute two sets of axis descriptions. Perhaps one can try to + compute the step size just once, and discard only [a,b] afterwards? + This would require to use a canvas axis length corresponding to the + unremoved axis range. + BTW: I need access to the unremoved axis range; both for tick computation + and for 'nodes near coords' or the clickable lib. + \item draw a decoration at the break. + \item perhaps also a decoration near affected coords. + \item perhaps I should apply the thing during the visualization phase, not + before. Then, I have all limits and the correct coordinates; only canvas + coords are affected. + \end{itemize} +\end{feature} + + +\begin{feature}[-] + plot graphics for 3D axes. +\end{feature} + +\begin{feature}[-] + feature to replicate axis descriptions on both sides +\end{feature} + +\begin{feature}[-] + polar axes: polar bar plots (see sourceforge feature request and + \url{http://matplotlib.sourceforge.net/examples/pylab_examples/polar_bar.html} ) +\end{feature} + +\begin{feature}[-] + couldn't you add something like + \verb|\providecommand*\pgfplotsset[1]{}| + to the "tikzexternal.sty" so one doesn't have to do it by hand when + switching from tikz/pgfplots? +\end{feature} + +\begin{feature}[-] + discontinuity in the middle of a plot + (as an example see the phase diagram of water + \url{http://pruffle.mit.edu/3.00/Lecture_29_web/img20.gif}) +\end{feature} + +\begin{feature}[-] + ternary diagram for extractions (more details will come) +\end{feature} + +\begin{feature}[-] + filled area between 2 addplot's (already requested in mailing list) + perhaps style 'fill plot' which is applied in vis phase. There, one can + access the postprocessed information of the previous plot. +\end{feature} + +\begin{feature}[-] + make work \verb|\matrix in \matrix| so one can use groupplots or + "Allignment in Array Form" (section 4.18.4) with legends +\end{feature} + +\begin{feature}[-] + nested axes would be a nice feature. + TODO: + - update the list of global state variables + - "interrupt" these variables somehow. + - make sure local redefinitions of TikZ commands (like point commands) + work; the \verb|\let...@orig=| assignments should be handled somehow. + - What about keys? They will be inherited from the outer axis... + perhaps the best would be an +\begin{verbatim} +\endgroup +<nested axis> +\begingroup +<restore state> +\end{verbatim} + which includes the keys of the outer axis!? +\end{feature} + +\begin{feature}[-] + support for "spy"glass into particular parts of an axis +\end{feature} + +\begin{feature}[-] + groupplots: group-wide axis labels +\end{feature} + +\begin{feature}[-] + It would be really great to have the possibility to attach a style to every nth row of a data table. For example, I would like to have a \verb|\midrule| not after every line or after odd/even lines but after every fifth (or whatever) line. +\end{feature} + + +\begin{feature}[-][prio=1] + log plots: minor tick num would be useful here! If tick labels are placed at + '1e-5, 1e0', minor tick num= 4 would lead to the minor tick lines at + '1e-4,1e-3,1e-2,1e-1' which is useful. + So:allow minor tick num for log axes. + $\leadsto$ + need to adjust the check for "uniform log ticks" +\end{feature} + +\begin{feature}[-] + is there a way to get the current row/col index during addplot? +\end{feature} + +\begin{feature}[-] + plot shell: + - It would be nice if the standard shell interpreter could be replaced. + Idea: + \verb|\pgfkeys{/pgfplots/plot shell/interpreter/.code 2 args={sh #1 > #2}}| + then in the code + \verb|\pgfkeysvalueof{/pgfplots/plot shell/interpreter/.@cmd}{#1.sh}{#1.out}\pgfeov| + - the pgfshell macro is quite general and could be added to pgf (as + suggested by you, Stefan). However, this would also need modifications in + tikz.code.tex to get some sort of high-level user interface. + I find plot shell very useful, and it could be added easily. My + suggestion: + Either write a high level user interface for tikz or rename the command + to pgfplotsshell and put it into pgfplotscoordprocessing.code.tex. + In the meantime, I added it to pgfplotscoordprocessing.code.tex (bottom). + - there is a potential difficulty with the 'addplot table shell' command + (which is a good solution!): the semicolon in this routine will have a + fixed catcode. But packages like babel with french language will change it + to active, so french people can't use addplot table shell. The solution + is technical and I am not proude of my own anyway... we'll just have to + think about one. + - documentation for the 'table shell' feature is missing yet. + - I am not sure if the replication of /tikz/prefix and /tikz/id is helpful + or confusing.... +\end{feature} + +\begin{feature}[-] + > Is it possible to shade the area between two curves, using pgfplots, such as + > in this example: \url{http://www.mathworks.com/matlabcentral/fileexchange/13188} + > The only shading I could find is between one curve and the x axis... Shading + > between curves seems to be possible, but only with stacked curves. Is is + > possible to disable stacking somehow, but keep the closedcycle behavior? +\end{feature} + +\begin{feature}[-] + new \verb|\plotnumofactualtype| thing: if you set /tikz/ plot handlers in + \verb|\begin{axis}|, they won't be set before the visualization phase. consequently, + I can't count them! + Idea: add a 'family' to each of them. Or wright a coord filter which checks + for \verb|\tikz@plot@handler| . Or write pgfplots styles which set them. +\end{feature} + +\begin{feature}[-] + feature request for line styles in tikz/pgf or pgfplots respectively: + add dash-dotted line which is quite commen in engineering field + for example something like + \begin{verbatim} + \tikzset{ + dash-dot/.style={ + dash pattern=on 4pt off 3pt on 1pt off 3pt, + }, + } +\end{verbatim} +\end{feature} + + +\begin{feature}[-] + Konnodalplots fuer Ternary Axes + + given: pairs of points $(A_i,B_i)$ with $A_i,B_i \in R^3$ for the connodals + + aim: connect $A_i -- B_i$ for each $i$ \emph{and} create the binodal line $A_1 -- A_2 -- \dotsb A_n -- B_n -- B_{n-1} --\dotsb B_1$ + + Remarks of stefan: + +Im Anhang ist ein Beispiel gezeigt, wie es gehen k\"onnte. + +Noch einmal zur Kl\"arung der Begriffe, mit denen ich gleich argumentieren werde: +\begin{itemize} + \item + Binodale: Kurve + \item + Konode(n): Gerade(n) [engl.: tie line] + \item Kritischer Entmischungspunkt: + Ist der Punkt, an dem die beiden Punkte der Konode zusammenfallen. + (nicht eingezeichnet) + \item Mischungsl\"ucke: Das Gebiet, was von der Binodalen eingeschlossen wird. + [engl.: miscibility gap] +\end{itemize} + +Im Anhang findest du zum Einen die Daten-Datei und zwei m\"ogliche +Darstellungsformen. +Das "\verb|gibbs_phase_diagram|" ist die Darstellung im Dreieckdiagram (was auch +Gibbs'sches Phasendiagramm oder Gibbs'sches Phasendreieck genannt wird); +"\verb|cartesian_phase_diagram|" entsprechend im Kartesischen Phasendiagramm. + +\IfFileExists{gibbs_phase_diagram.pdf}{\includegraphics[width=7cm]{gibbs_phase_diagram.pdf}}{} + +\IfFileExists{cartesian_phase_diagram.pdf}{\includegraphics[width=7cm]{cartesian_phase_diagram.pdf}}{} + + +Wenn man die Daten generiert, bekommt man \"ublicherweise 2 Matrizen mit den +jeweiligen Zusammensetzungen an den Enden der Konoden ($A_y$ bzw. $B_y$, wobei y die +jeweilige Komponente ist). Diese kann man dann einfach nebeneinander setzen und +erh\"alt z.B. das mitgelieferte Textfile. +Jetzt k\"onnte man schon einmal die Binodale zeichnen. Dazu generiert mein Kollege +in Matlab eine neue Matrix, indem er die UpDownGeflippte-Matrix B unter die +Matrix A h\"angt und diese dann zeichnen l\"asst. +Damit die Binodale "sch\"on rund" ist, erzeugt man h\"aufig mehr Punktepaare, als +man nachher als Konoden anzeigen lassen m\"ochte. In den mitgelieferten Plots ist +so nur jede 5. Konode eingezeichnet. + +Die Frage ist nun, wie man das Abfragen der Konoden gestalten kann. Daf\"ur g\"abe +es jetzt die M\"oglichkeit einen Key zu erstellen, der sowas sagt wie "plot every +Xth tie line". + + +Ich denke mal, du brauchst auch noch einen sch\"onen Namen den Aufruf dieses +Spezialfalls. Da diese zum Zeichnen von Mischungsl\"ucken dient, w\"are der +Englische Name daf\"ur (s.o.) eine M\"oglichkeit. + + + was mir noch eingefallen ist: + +- Zuweisung der Spalten +Es sollte weiterhin m\"oglich sein, Spalten zuzuweisen. Die Frage ist jetzt nur, wie man das macht. Am Einfachsten d\"urfte es sein, in den ersten 3 Spalten nach den Namen zu suchen. Sollte sie dort nicht gefunden werden, sollte eine Fehlermeldung erscheinen. Zum Zuweisen der "zweiten" dazugeh\"origen Spalte sollte zu der gefundenen Spaltennummer 3 hinzuaddiert werden. Metadaten k\"onnen somit erst ab der 7. Spalte auftauchen. + + +- kartesische Darstellung +hier hatte ich vergessen zu erw\"ahnen, wie dies \"uberhaupt funktioniert (vielleicht hast du es aber auch schon alleine herausbekommen). + +Da sich die 3. Komponente immer als Differenz zu den gezeigten beiden ergibt, ist diese nicht zwingend zum Darstellen erforderlich. Ausgehend von der gleichen gegebenen table-Datei muss nun nur noch angegeben werden, welche beiden Komponenten dargestellt werden sollen. Dies sollte wie schon oben beschrieben wurde m\"oglich sein. + +Das Plotten sollte dann out-of-the-box m\"oglich sein. + +\end{feature} + +\begin{feature}[-] + disable bounding box updated during addplot -- it makes no sense and wastes + time (unless the axis is hidden) +\end{feature} + +\begin{feature}[-] + output cs: + - implement automatic limit computation + $\leadsto$ I prepared something like that; use it. + I guess I'll need to convert the streamed data to the accepted format of + the axis, at least in order to update limits. +\end{feature} + +\begin{feature}[-] + polar: + \begin{itemize} + \item + is my current datascaling approach correct? I mean, is the linear trafo + feasible at all? + \item the *affine* radius datascaletrafo could be enabled, if only + parts of the circle are drawn at all, for example + xmin=0,xmax=45, + ymin=1e-4,ymax=1.003e-4 + Idea: check arc size and disable the radius *affine* data scaling only if + the arc has more than 90 (?) degrees + Is that mathematically correct? And: is it useful at all? + \item handle "empty axis". It should reset to a circle, not a box. +\end{itemize} +\end{feature} + +\begin{feature}[-] + patch visualization: provide displacement input format +\end{feature} + +\begin{feature}[+] + write better on-the-fly table generation support like + \verb|\addplot table[y=create col/linear regression{x=Basis,y=L2/ref_h,xmode=log,ymode=log},]| +\end{feature} + +\begin{feature}[+] + improve access to `create on use' things in addplot table. +\end{feature} + +\begin{feature}[+] + linear regression: at least when used inside of addplot table, the initial + values of x,y,xmode,ymode should be acquired from pgfplots! +\end{feature} + + +\begin{feature}[-] + the following keys should process their argument with pgfmathparse: + \begin{itemize} + \item + \item [xyz]tick, + \item min/max + \item tickmin/max + \item meta min/max + \item domain/ y domain, + \item error bar arguments, + \item without FPU: width/height/ view + \item check optimizations of the math parser! + \item check if I can activate the FPU during the survey phase! +\end{itemize} +\end{feature} + +\begin{feature}[-] + add polar coordinates +\end{feature} + +\begin{feature}[-] + Idea for input stuff: implement high level user interface for coordinate + input, similar to the pgf basic level framework. Then, add styles on top of it + (try to be compatible with DV engine) +\end{feature} + +\begin{feature}[-] + Idea: + implement an automatic /pgf/number format setting which determines a + suitable representation for a *set* of numbers. + For example, + 1e-17 0.2 0.4 0.8 + should be printed as + 0 0.2 0.4 0.8 + whereas + 1e-17 2e-17 3e-17 + should be printed using the scientific range (perhaps even using some sort + of scaling as for ticks). + This would be useful for contour plot labels as well. + $\leadsto$ a realization should check the data range (especially its exponent). + Thus, I want a *relative* number printing style. +\end{feature} + + +\begin{feature}[-] + new plot structure : use the `/data point' key interface coming with pgf CVS +\end{feature} + +\begin{feature}[-] + new structure for math operations: + \begin{itemize} + \item aim: interface for math operations which works independent of lowlevel repr + \item> FPU vs basic pgf vs LUA vs 'fp.sty' vs .... + \item> log axes can be done in pgf (faster) + \item necessary: high level \verb|\pgfmathparse| *and* mid level invocation of + operations + \item necessary: parsenumber, tofixed, tostring + \item datascaling needs access to exponents and base 10 shifts + \item necessary: check for nan and inf + \item necessary: the max/min routines which are no longer supported by pgf (the + \verb|\pgfplotsmath...| routines) + \end{itemize} + interface: + \begin{itemize} + \item + transparent exchange of math mode routines + \item fast (enough) + \item for each axis separately (optimized for log) + \item variable number of arguments + \item expansion of arguments should be possible + \item the interface is necessary for *coordinate* arithmetics, + not necessarily for the pgf interaction (can keep register math) + \end{itemize} + realization ideas: + \begin{itemize} + \item command suffix for each axis '@basic' versus 'float' + \item central interface to invoke math ops: + \verb|\pgfplotscoordmath{x}{multiply}{{<arga>}{<argb>}}| + Idea: use \verb|\edef| on the arguments. + \item provide \verb|\pgfplotssetmathmode{x}{<suffix>}| + should assert that the desired interface is complete + \item \verb|\pgfmathparse| may need to be adjusted if it uses a different output + format than <suffix> + \end{itemize} + TODO: + \begin{itemize} + \item the log routines -$\leadsto$ also use it for table package. + BUGGY! compare examples in manual. Minor log ticks don't work at + all, default log tick labels are simply wrong. + \item disablelogfilter case + \item error bars work with both, float and log + \item plothandlers.code.tex + \item prepare@ZERO@coords + \end{itemize} +\end{feature} + +\begin{feature}[-] + rewrite the read number routines. They should allow 'disabledatafilter' thing + during addplot. +\end{feature} + +\begin{feature}[-] + quiver plots: + \begin{itemize} + \item allow to disable update of axis limits + \item provide rescaling of arrows such that they don't overlap. + manual rescaling is simple, auto is more difficult. + auto: if I have a matrix, I could rescale such that its mesh width is + larger than the largest vector. + Same fo a vector of input data. + But what if I don't know whether it's a vector or matrix? + $\leadsto$ second run. + $\leadsto$ after the first, it should be possible to autocomplete the mesh + rows/cols. Try it. If that works, we have a matrix. + $\leadsto$ could be done from within the scanlinelength routines: auto-detect + mesh/rows + mesh/cols + mesh/ordering + mesh/width + but that fails if there is no scanline marker. + \item what with log plots? What with other axis features like symbolic trafos? + $\leadsto$ need difference type! + \item that is: quiver plots in log coords are *multiplicative* and invoke the + same routines. make special handling for '0'. + \item allow feature where (u,v) are *coords*, not vectors. this could allow + additive log quiver plots. + \end{itemize} +\end{feature} + +\begin{feature}[-] + plot expression: make the sampling parameters available within survey phase +\end{feature} + +\begin{feature}[-] + the table package uses a lot of logs -- but it can't change the log basis. +\end{feature} + +\begin{feature}[-] + 3D + axis line variants: someone might prefer GRID LINES as for the boxed case + combined with axis line=left... +\end{feature} + +\begin{feature}[-] + bar plots: + \begin{itemize} + \item + bar interval plot handler which *assumes* uniform distances. This allows to eliminate the last, superfluos grid point (because it can be generated automatically as replication xlast + h for known h) + \item in fact, I could also implement + xlast + hlast + and introduce a new name like 'bar interval*' or something like that +\end{itemize} +\end{feature} + + +\begin{feature}[-] + Mails from Stefan Ruhstorfer: + \begin{itemize} + \item + Gruppierte S\"aulendiagramme sind nach meinem Wissenstand nur dann m\"oglich wenn man in der Axis-Definiton die Bedindung ybar angibt. Ich finde diese Ausrichtung sehr unflexible, da ich sehr oft \"uber das Problem stolpere, dass ich in meinem gruppierten S\"aulendiagramm noch eine waagrechte Linie oder \"ahnlichs einzeichnen m\"ochte um z.B. meine obere Toleranzgrenze einzuzeichnen. Bis jetzt mache ich das \"uber den normalen draw Modus, was auch ausgezeichnet funktioniert. Jedoch habe ich dann das Problem, dass ich keinen sch\"onen Legendeintrag mehr bekomme. Hier h\"ate ich 2 Vorschl\"age. Zum einen die Legende "freier" zu gestalten. Also so, dass man beliebig (ggf. auch ohne Plot) ein Legendenelement hinzuf\"uen kann und vllt. noch das zugeh\"orige Symbol festlegen kann. (Bis jetzt habe ich das Problem, das ich mit tricksen zwar meine Obere Tolerangrenze in die Legende bekomme, dann jedoch mit einem S\"aulenzeichnen davor). + Der andere Vorschlag ist, dass S\"aulendiagramm anders zu definiern. So das ich auch noch einen Plot hinzuf\"ugen kann, der mir eine waagrechte Linie ohne zu tricksen einzeichnen l\"asst. + \item Eine Gruppierung von stacked bars ist nach meinem Wissen nicht m\"oglich. Es ist zwar schwer sich ein Anwendungsgebiet daf\"ur vorzustellen, aber wenn sie danach mal suchen (speziell im Excelbereich) werden sie sehen, dass viele Leute so eine Funktion benutzen. + $\leadsto$ siehe auch folgemails mit Beispielskizzen + $\leadsto$ beachte: Fall 2.) erfordert mehr arbeit als lediglich 'line legend', weil ybar ja den koordinatenindex verarbeitet! +\end{itemize} +\end{feature} + +\begin{feature}[-] + Mail by Hubertus Bromberger: + \begin{itemize} + \item \ok + Period in legend, without the need of using the math environment? + \verb|\legend{ML spcm$.$, CW spcm$.$, ML AC};| + \item Maybe a more straight forward way for legend to implement something like + shown in the graph. (see his mail .tex) + $\leadsto$ plot marks only at specific points. + thus, the legend image should contain both lines and marks, but there + are effectively two addplot commands. + \item As a physicist, I often have the problem to fit curves. A job gnuplot can do + very well. It should be possible using "raw gnuplot" but maybe you can either + provide an example or even implement a more straight forward way for this + purpose. + \item The color scheme is not really my taste. + In CONTEXT: +\begin{verbatim} + cycle list={% + {Col1,mark=*}, + {Col2,mark=square*}, + {Col3,mark=diamond*}, + {Col4,mark=star}, + {Col5,mark=pentagon*}, + {Col6,mark=square*}, + {Col7,mark=diamond*}, + {Col8,mark=triangle*} }} + \definecolor[Col1][r=0.24106,g=0.05490,b=0.90588] % blau + \definecolor[Col2][r=1,g=0.05490,b=0.06667] % rot + \definecolor[Col3][r=0.65490,g=0.73333,b=0.01176] % grün + \definecolor[Col4][r=0.08627,g=0.92549,b=0.91373] % tyrkis + \definecolor[Col5][r=1,g=0.5,b=0] % orange + \definecolor[Col6][r=0.54118,g=0.51765,b=0.51765] % grau + \definecolor[Col7][r=0.80784,g=0.49804,b=0.06275] % okker + \definecolor[Col8][r=0.74902,g=0.07451,b=0.91765] % lila +\end{verbatim} + \item Sometimes it would be good to have a bit more of a programming language, but + still that's not what tex is made for. The python-script looks promising, it's + just, that I think it doesn't work with context. +\end{itemize} +\end{feature} + +\begin{feature}[-] + add something like +\begin{verbatim} + \pgfplotstabletypeset[ + cell { 1 }{ 2 }={\multirow{*}{3}{text}} + ] +\end{verbatim} +\end{feature} + +\begin{feature}[-] + I got several feature requests for non-cartesian axes. + Perhaps there is a way to generalize the complete procedure... as far as I + remember, I use the pointxyz routines anyway to place tick marks and so on. + Perhaps it can be reconfigured to do something "advanced". + Idea: nonlinear transformation into the axis combined with special drawing + rotuines for the axis? + ternary diagrams + \url{http://staff.aist.go.jp/a.noda/programs/ternary/ternary-en.html}. + smith charts + \url{http://www.mathworks.com/access/helpdesk/help/toolbox/rf/f2-999699.html} + \url{http://www.siart.de/lehre/smithdgr.pdf} +\end{feature} + +\begin{feature}[-] + ternary diagrams todo: + \begin{itemize} + \item the \verb|\pgfplotsqpointoutsideofaxis| + work only for position 1, nothing in-between (since it doesn't compute the + other axis components correctly) + \item data ranges are currently only correct if in [0,1] or if one provides the + [xyz]min and [xyz]max keys (and the ternary limits relative=false). + How should it work!? +\end{itemize} +\end{feature} + +\begin{feature}[X] + idea: 'mesh/ordering=auto'. Just check for 'x varies' and 'y varies'! The two + first points inside of a scanline are enough. +\end{feature} + +\begin{feature}[-] + contour: + \begin{itemize} + \item labels={true,false,auto} + $\leadsto$ auto should deactivate labels if there are too many contour lines. + \item labels should not be clipped... + \item add label position shifting facilities. + $\leadsto$ identify by contour label *and* an optional index. There may be more + than one line. +\end{itemize} +\end{feature} + +\begin{feature}[-] + contourf: I guess filled contour plots could be possible if always two + adjacent color levels are combined into a single path which is then filled + with the simplified even/odd rule (not the winding fill rule). With the + underlying smoothness assumption $C^0$, there can't be any level between two + adjacent ones, and there can't be self-intersections. +\end{feature} + +\begin{feature}[-] + it would be very interesting to allow more flexible handling of empty lines in + input data, especially files. +\end{feature} + +\begin{feature}[-] + contour draft TODO: + \begin{itemize} + \item color of text nodes + \item make sure there is at least one label node + \item implement contourf + \begin{itemize} + \item often: use 'even odd rule' to fill adjacent contours. + \item but this works only if adjacent contours are contained in each other. + \item if that's not the case, perhaps I need to add an artifical path from + the data limits. + \item idea: in case I know the corner values, I'd know which contour + plateau requires the artifical path. + \item other idea: I could implement some sort of even-odd rule in TeX. This + should also yield the information. + \end{itemize} +\end{itemize} +\end{feature} + + +\begin{feature}[-] + implement simplified constructions to access DIFFERENCE coordinates. + For example, \verb|\draw| ellipse needs x radius and y radius. +\end{feature} + + +\begin{feature}[-] + it might be interesting to fill the area between two paths. Perhaps there is + such a feature in pgf; or perhaps I can generalize the \verb|\closedcycle| + implementation written for stacked plots. +\end{feature} + +\begin{feature}[-] + provide a \verb|\numplotsperplothandler| or something like that. This would improve + things for bar plots! +\end{feature} + +\begin{feature}[-] + the 'table/y index' should be changed. It should be min(numcols,1) instead of 1. +\end{feature} + +\begin{feature}[-] + table package and axes should improve their communication. + Namely: + \begin{itemize} + \item + \item communicate table names. + \item communicate xmode/ymode + \item communicate log basis [xy] +\end{itemize} +\end{feature} + +\begin{feature}[-] + provide and document access to (sanitized?) mesh/rows and mesh/cols fields + during the survey phase. This might allow 2d key filters +\end{feature} + +\begin{feature}[-] + Praktisch f\"ande ich, wenn man folgende Dinge spezifizieren kann: +1. Welche Zeilen aus der Datei ausgelesen sollen (h\"aufig gibt es nicht +nur 1, sondern mehrere Header-Zeilen, oder auch am Ende noch sonstige +Zeilen) +\end{feature} + +\begin{feature}[-] + improve support for multiple ordinates +\end{feature} + +\begin{feature}[-] + it would be useful if the clipping could be disabled for certain parts of the + axis. Is that possible? + \begin{itemize} + \item yes. + Idea: start clipping for every axis element separately! Shouldn't be + much more expensive than a single marker path. + \item should work in the same way as before, there is no difference! + \item scopes should introduce no further problems + \item I could eliminate the nasty marker list +\end{itemize} +\end{feature} + +\begin{feature}[-] + provide a \verb|\pgfplotspathcube| command as generalization from the cube marker. + The cube command should work similar to pathrectangle or rectanglecorners. +\end{feature} + +\begin{feature}[-] + re-implement sampling loops. I should discard the compatibility with foreach + internally in order to gain accuracy! Maybe it is necessary to invoke + different loops - one for tikz foreach (samples at) and one "standard" + sampling routine. +\end{feature} + + +\begin{feature}[-] + optimization ideas: + \begin{itemize} + \item replace \verb|\pgfpointscale| with a 'q' version $\leadsto$ it invokes the expensive math parser. + \item pgfmultipartnode evaluates every anchor twice + \item implement a cache for expensive, repeated math operations like 'view' + directions or common results of $1/||e_i||$ . + \item search for unnecessary math parser invocations; replace with 'q' versions + if possible. + \item implement a hierarchical generalization of the 'applist' container (a tree + applist of arbitrary length) + \item eliminate the deprecated 'non-legend-option' processing. + \item remove the different (empty) paths of the axis node -- it appears they are + not necessary and waste only time and mem. + \item try implementing an abstract 'serialize' and 'unserialize' method - it + might be faster to re-process input streams instead of generating + preprocessed coordinate lists. + \item try to reduce invocations of pgfkeys + \item optimize the filtered pgfkeys invocations - the filter is slower than + necessary! + \item 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. + \item the point meta transform is set up twice for + scatter plots. + \item my elementary data structures always use \verb|\string| to support macros as data structure names. I fear this might be ineffective. + Perhaps its better to check if the argument is a macro (at creation time, thus only once) and call \verb|\edef#1{\string#1}| to assign some sort of name to it. + This will invoke \verb|\string| only once. Is this faster? + \item eliminate the 'veclength' invocations for single axes - they can be + replaced with "inverse unit length * (max-min)" + \item the key setting things can be optimized with pgfkeysdef + \item create the /pgfplots/.unknown handler (.search also=/tikz) once and remember it. + \item the (new) tick label code might be very expensive: + \begin{itemize} + \item check for (unnecessary) calls to \verb|\pgfpointnormalised| -- the normal + vectors are already normalised! + \item check the cost for bounding box size control of the tick labels -- + maybe this can be optimized away if it is not used. But this decision + is not easy. + \end{itemize} +\end{itemize} +\end{feature} + + +\begin{feature}[-] + perhaps math style \verb|{grid=major, axis x line=middle, axis y line=center, tick align=outside}| +\end{feature} + +\begin{feature}[-] + asymmetric error bars +\end{feature} + +\begin{feature}[-] + provide access to axis limits and data bounding box. + It would be useful to get access to axis coordinates, for example in 'circle (XXX)' +\end{feature} + +\begin{feature}[-] + allow math expressions for axis limits etc. Idea: try float parsing routine; + if it fails: use math parser first. +\end{feature} + +\begin{feature}[-] + write a public math interface which provides access to axis internals like + limits, the 'dimen-to-coordinate' method and so on. + $\leadsto$ it might be useful to use pgfmathparse for any numerical input argument as + well. +\end{feature} + +\begin{feature}[-] + Store the axis limits into the axis' node as saved macros. This would allow + \begin{itemize} + \item 'use [xy] limits of=<axis name>' + \item access to axis limits from other macros. + \item provide a command + \verb|\pgfplotslimits{current axis}{x}{min}| + which expands to the 'xmin' limit. + PROBLEM: to WHICH limit: the untransformed one? The transformed one? The + logarithmized one? + \begin{itemize} + \item> I can't compute exp(xmin) in log plots! + \item Ideas: + \item provide both, if possible. It is NOT possible for log axes. + \item use log-limits ( possibly combined with 'logxmin=' option ?) + \item The operation requires several operations because floats need to + be converted. Idea: do that only for NAMED AXES. + \item all user-interface macros must be expandable! + \item I don't want to spent time for number format conversions + unnecessarily here! + \item provide \verb|\pgfplotslimits| and \verb|\pgfplotstransformedlimits| + combined with simpler key-value interfaces + \item I could also provide access to the unit lengths (they are + available as macro anyway) + \item ALTERNATIVE: implement access to axis limits as a math function + which simply defines \verb|\pgfmathresult|. + \item that is probably the most efficient way to do it. I only need to + register the new function(s) to PGF MATH. + \item PGF 2.00: use \verb|\csname pgfmath@parsefunction@\pgfmath@parsedfunctionname\endcsname| + \item PGF > 2.00: use \verb|\pgfmathdeclarefunction| + Is it possible to provide 'string' arguments which are not + parsed? No. + \end{itemize} +\end{itemize} +\end{feature} + +\begin{feature}[-] + I could provide public macros for the data transformations (and inverse + transformations). This would also allow relatively simple access to axis + limits. +\end{feature} + +\begin{feature}[-] + cycle list should be implemented using an array structure. That's faster. +\end{feature} + + +\begin{feature}[-] + what about a feature like 'draw[xmin=...,xmax=...] fitline between points (a) + (b)'? +\end{feature} + +\begin{feature}[-] + interpolate missing coordinates for stacked plots. +\end{feature} + +\begin{feature}[-] + 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 +\end{feature} + +\begin{feature}[-] + 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 + \begin{itemize} + \item scatter/line plots 2D + \item meta coords + \item quiver may need extra vectors + \item matrix plots may need twodimensional structure + \item error bars could be handled more consistently + \item ... + \item> implement a visualization class which provides methods + \begin{itemize} + \item prepare() + \item visualize() + \item serialize() + \item visualizestream() + and provide protected pgfplots methods + \item axis$\leadsto$preprocesscoordinate (filters, logs) + \item visualizer$\leadsto$prepare() + \item axis$\leadsto$processcoordinate() + \item visualizer$\leadsto$serialize() + \item axis$\leadsto$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! + \end{itemize} +\end{itemize} +\end{feature} + +\begin{feature}[-] + the coordindex shouldn't be changed by z buffer=sort +\end{feature} + +\begin{feature}[-] + table package: provide abstract layer for low level storage interface. + Idea: the interface should allow the container interface + \begin{itemize} + \item push\_back() + \item get(i) + \item set(i) + \item foreach() + \item pop\_front() + \item newempty() + \item clone() + \item unscope() + \item startPushBackSequence() + \item stopPushBackSequence() +\end{itemize} + $\leadsto$ this could allow to use arrays for fast algorithms. At least it would make + things easier to read. + Problem as always: the 'unscope()' operation. + Currently, I have two different structures: the applists which have fast + construction properties and the standard lists which implement the rest. + Can I combine both? Yes, by means of the incremental construction pattern: +\begin{verbatim} + \startPushBackSequence + \push_back + \push_back + \push_back + \stopPushBackSequence +\end{verbatim} + $\leadsto$ inside of the construction, only \verb|\push_back| is allowed and the structure is + in "locked state" (low level: applist repr) + $\leadsto$ Idea: the creation is fast, afterwards, it has flexibility. +\end{feature} + +\begin{feature}[-] + It is certainly possible to write some sort of CELL-BASED 'mesh/surf' shader - + a combination of 'flat corner' and cell based rectangles: + \begin{itemize} + \item every coordinate denotes a CELL instead of a corner, + \item the "shader" maps the cdata into the colormap to determine the cell color + \item details? + \begin{itemize} + \item to get well-defined cells, I have to enforce either a non-parametric + lattice grid or do a LOT of additional operations (?). + \item alternative: define N*M cells by N+1 * M+1 points. + \item perhaps a combination of both? + $\leadsto$ that's more or less the same as 'flat mean' up to the further + row/column pair +\end{itemize} + \item it would be generally useful to have an "interval" or "cell" mode: + the idea is that every input coordinate defines an interval (1d) or a cell + (2d). To define the last cell, one needs to add one "mesh width" somehow. + I just don't know where: + \begin{itemize} + \item the artificial cell should be processed with the normal streams - + including limit updates, stacking etc. + \item the artificial cell needs to know when the end-of-stream occurs. + For 1d plots, that may be possible. For 2D plots, this information + requires a valid 'cols' key. + \item I suppose it would be best to patch @stream@coord.. at least for the + 'cell' mode. + \item Idea: + \begin{itemize} + \item the \verb|\pgfplots@coord@stream@coord| implementation realizes the + cell-mode: after every 'cols' coordinate, a further one is + replicated. This needs the "last mesh width". + Furthermore, it needs to accumulate a row vector, the "last row". + This last row is need during stream@end to replicate the further + row: + \item the \verb|\pgfplots@coord@stream@end| implementation has to realize the + last step of cell mode: the replication of a further row. It also + has to realize the implementation of 'interval' mode (replication + of last coordinate). + My idea is to simply use an applist for this row accumulation. The + format should be compatible with \verb|\pgfplots@coord@stream@foreach@NORMALIZED|. + That doesn't produce problems, even when the end command is invoked within + a foreach@NORMALIZED loop - because the loop has already ended. +\end{itemize} +\end{itemize} +\end{itemize} +\end{feature} + +\begin{feature}[+] + external lib + makefile support: provide data files automatically as prereqs +\end{feature} + +\begin{feature}[-] + support \verb|\multicolumn| for legends +\end{feature} + +\begin{feature}[-] + it appears line breaks in legend descriptions are a problem (?) + $\leadsto$ bug in pgf: \verb|\\| is overwritten and won't be restored. +\end{feature} + +\begin{feature}[+] + external lib + makefile support: provide data files automatically as prereqs +\end{feature} + +\begin{feature}[-] + pgfplotstable file open protocol: provide public listener interface +\end{feature} + +\begin{feature}[-][] + \verb|\addplot coordinates {\macro};| +\end{feature} + +\begin{feature}[-] + precise width calculation idea: + \begin{itemize} + \item Problem: total width depends on width of axis descriptions + \item width of axis descriptions depends on position of axis descriptions + \item position of axis descriptions depends on width of axis + \item width of axis depends on width of axis descriptions + \item non-linearly coupled system. + \item Idea: introduce a loop. + \begin{itemize} + \item details: + \begin{enumerate} + \item + place axis descriptions + the axis rectangle into a box. + \item Measure box'es width, throw it away if it is too bad. Keep it and stop iteration otherwise. + \item recompute the complete scaling. + \item go back to step 1.) and iterate + \end{enumerate} + \item one or two iterations should be enough . + \item it's not necessary to recompute the prepared and stored plots. Just keep them in main memory until the scaling is fixed. +\end{itemize} +\end{itemize} +\end{feature} + +\end{bugtracker} +\end{document} diff --git a/Master/texmf-dist/doc/latex/pgfplots/plotdata/ternary_data.txt b/Master/texmf-dist/doc/latex/pgfplots/plotdata/ternary_data.txt new file mode 100644 index 00000000000..0051588a363 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pgfplots/plotdata/ternary_data.txt @@ -0,0 +1,42 @@ +% mole fractions (IPA = isopropyl alcohol) +% +A_propene A_water A_IPA B_propene B_water B_IPA +9.4235838E-04 9.9905764E-01 0.0000000E+00 9.3330459E-01 6.6695407E-02 0.0000000E+00 +9.4215477E-04 9.9884179E-01 2.1605807E-04 9.3036158E-01 6.6485095E-02 3.1533200E-03 +1.1080937E-03 9.9755844E-01 1.3334700E-03 9.1359901E-01 6.7301914E-02 1.9099071E-02 +1.2827831E-03 9.9627739E-01 2.4398276E-03 8.9561913E-01 6.9258571E-02 3.5122298E-02 +1.4554132E-03 9.9506432E-01 3.4802642E-03 8.7673113E-01 7.1936388E-02 5.1332485E-02 +1.6177531E-03 9.9395900E-01 4.4232468E-03 8.5685840E-01 7.5379766E-02 6.7761838E-02 +1.7682020E-03 9.9295589E-01 5.2759119E-03 8.3586919E-01 7.9813479E-02 8.4317327E-02 +1.9134033E-03 9.9200189E-01 6.0847116E-03 8.1380294E-01 8.5396682E-02 1.0080037E-01 +2.0625750E-03 9.9103237E-01 6.9050506E-03 7.9084551E-01 9.2146960E-02 1.1700753E-01 +2.2233425E-03 9.8999859E-01 7.7780716E-03 7.6724141E-01 9.9960064E-02 1.3279853E-01 +2.4003560E-03 9.8887288E-01 8.7267643E-03 7.4318961E-01 1.0871534E-01 1.4809505E-01 +2.5968721E-03 9.8763898E-01 9.7641444E-03 7.1884713E-01 1.1829828E-01 1.6285459E-01 +2.8148300E-03 9.8628836E-01 1.0896809E-02 6.9431051E-01 1.2863826E-01 1.7705124E-01 +3.0564528E-03 9.8481268E-01 1.2130867E-02 6.6966558E-01 1.3966801E-01 1.9066641E-01 +3.3231964E-03 9.8320674E-01 1.3470060E-02 6.4495675E-01 1.5136031E-01 2.0368294E-01 +3.6173991E-03 9.8146211E-01 1.4920492E-02 6.2023979E-01 1.6367472E-01 2.1608549E-01 +3.9408461E-03 9.7957209E-01 1.6487064E-02 5.9554212E-01 1.7660112E-01 2.2785676E-01 +4.2954638E-03 9.7752912E-01 1.8175420E-02 5.7088606E-01 1.9013622E-01 2.3897772E-01 +4.6842265E-03 9.7532136E-01 1.9994417E-02 5.4630971E-01 2.0425946E-01 2.4943083E-01 +5.1091212E-03 9.7294002E-01 2.1950864E-02 5.2181926E-01 2.1898856E-01 2.5919218E-01 +5.5730727E-03 9.7037226E-01 2.4054662E-02 4.9743456E-01 2.3432762E-01 2.6823782E-01 +6.0811333E-03 9.6759694E-01 2.6321927E-02 4.7320495E-01 2.5024516E-01 2.7654989E-01 +6.6344965E-03 9.6460585E-01 2.8759653E-02 4.4909838E-01 2.6681422E-01 2.8408740E-01 +7.2406958E-03 9.6136718E-01 3.1392129E-02 4.2518272E-01 2.8398337E-01 2.9083391E-01 +7.9019565E-03 9.5786681E-01 3.4231230E-02 4.0142504E-01 3.0183612E-01 2.9673885E-01 +8.6249420E-03 9.5407345E-01 3.7301604E-02 3.7785036E-01 3.2038537E-01 3.0176427E-01 +9.4206443E-03 9.4993891E-01 4.0640443E-02 3.5451625E-01 3.3960006E-01 3.0588369E-01 +1.0292322E-02 9.4544003E-01 4.4267644E-02 3.3136376E-01 3.5962367E-01 3.0901257E-01 +1.1255153E-02 9.4050925E-01 4.8235594E-02 3.0845009E-01 3.8044015E-01 3.1110976E-01 +1.2326950E-02 9.3506669E-01 5.2606360E-02 2.8581063E-01 4.0206987E-01 3.1211950E-01 +1.3517906E-02 9.2905471E-01 5.7427388E-02 2.6337148E-01 4.2472395E-01 3.1190457E-01 +1.4865451E-02 9.2231580E-01 6.2818745E-02 2.4122846E-01 4.4835517E-01 3.1041637E-01 +1.6405086E-02 9.1469239E-01 6.8902522E-02 2.1935506E-01 4.7313808E-01 3.0750686E-01 +1.8190494E-02 9.0595494E-01 7.5854571E-02 1.9772252E-01 4.9929154E-01 3.0298594E-01 +2.0328070E-02 8.9568105E-01 8.3990879E-02 1.7638276E-01 5.2692760E-01 2.9668964E-01 +2.2996914E-02 8.8318645E-01 9.3816639E-02 1.5533006E-01 5.5632246E-01 2.8834748E-01 +2.6589342E-02 8.6705639E-01 1.0635427E-01 1.3459156E-01 5.8777731E-01 2.7763113E-01 +3.1980054E-02 8.4430759E-01 1.2371236E-01 1.1375649E-01 6.2279538E-01 2.6344812E-01 +4.1458426E-02 8.0760432E-01 1.5093726E-01 8.9949059E-02 6.6984377E-01 2.4020717E-01 diff --git a/Master/texmf-dist/doc/latex/pgfplots/todo.txt b/Master/texmf-dist/doc/latex/pgfplots/todo.txt deleted file mode 100644 index a64bbb6353b..00000000000 --- a/Master/texmf-dist/doc/latex/pgfplots/todo.txt +++ /dev/null @@ -1,2782 +0,0 @@ -todo legend: -'-' means: not yet processed, is still to do -'+' means: processed -'X' means: has been checked and deleted -'~' means: partially processed - -------------------------------------------------------------- -Testing -------------------------------------------------------------- - -last test verifications: - pgf CVS pgf 2.00 pgf 2.00+compat=default -pgfplotstests for 1.4 for 1.4 2009-12-30 -manual for 1.4 for 1.4 -pgfplotstable.pdf for 1.4 for 1.4 -example latex for 1.4 2009-12-30 -example context for 1.4 2009-12-30 -example plain tex for 1.4 2009-12-30 -tests context for 1.4 - -I NEED MORE TESTS! -The test suite needs to be developed! - -+ tests for scan line length stuff for all input methods -+ tests for the placement of tick scale labels -+ test whether title placement works as it ought to do in previous versions -- test 'colormap access=direct' -+ test all z buffer variants -+ test gnuplot and log sampling 3D -- test log sampling in 3D -+ verify mesh/ordering=colwise -- test of compat keys - -> can they be used as arguments for an axis? -+ test those tickpos num keys! especially in combination with axis line - variations. Also test ticklabel pos - - - ---------------- -pgfplots 1.4 todo: ---------------- -+ improve docs on alignment things -+ document how to make multi-line legends -+ document how to add custom things into a legend (add examples) -+ fix the \ref thing for legends/colorbar. It introduces a further stroke color - somehow. -+ check if the \ref thing for legends can suppress the hyperref link color. -+ incorporate the bugfix for 'point meta=f(x)' -+ should fix the "\numplots per plot handler" feature, i.e. should allow bar - plots / line plots in the same axis with 'ybar'. -+ document new regression feature in pgfplots.pdf (is currently in - pgfplotstable.pdf) -+ document new table input in pgfplots.pdf -+ fix bugs -+ update docs for external lib - - ---------------- -pgfplots 1.3.1: ---------------- -+ tests (see above) -+ spell checker -+ the ChangeLog is a mess. The automerger failed. - I will need to restore it manually... it mixed stable and master versions. -+ critical: external lib and its backw. compat layer - perhaps I should disable them completely for the stable version? - There are no branches, either fully CVS or not at all. -+ import docs for recent number printing styles -+ set version number -+ set release dates for pgfplots.sty and pgfplotstable.sty -+ update ChangeLog to reflect the release and tag git -- update ubuntu PPA -x upload sourceforge images -+ release makefile -+ CTAN: communicate sourceforge link -+ make short, summarized changelog: - - improved parametric plots with gnuplot - - improved normalsize, small and footnotesize scale styles and added tiny - - fixed a lot of bugs - - -------------------------------------------------------------- -USER INTERFACE DECISIONS -------------------------------------------------------------- - -- the axis line combination styles can't be adjusted for 3D because they are - evaluated too early. - -------------------------------------------------------------- -MISC -------------------------------------------------------------- - -+ disable pgfplots CVS? - -- documentation todo: - - document the new 'getcolumnbyname={create col/....}' feature - + document linear regression - - document how to identify the source of "dimension too large" errors: - tracingstuff. - - external lib + dvi/ps + windows: it seems the ';' doesn't work; use '&' to - separate commands - - external lib: improve docs for how to deal with \label/\ref things and how - it works - - document how to fix dimension too large problems: restrict to domain for - example - + document \pgfresetboundingbox - + document how to plot against the column index - + colorbar sampled - + colorbar sampled line - - colorbar styles are not consistent between docs and code - - It seems as if the AMS command $\text{\ref{ref:to:a:plot}}$ instantiates the - \ref at least four times. Document somehow that it is better to use '\hbox' - instead - + pgfplots.sty: try to insert the SHA hash of the commit (for non-stable - versions) - -> echo '\def\pgfplotsrevision{'`git rev-parse HEAD`'}' > - tex/generic/pgfplots/pgfplots.revision.tex - -> this file shouldn't be part of the repo - -> load it from pgfplots.sty - -> should be updated during checkout and, probably, as post-commit - -> if it doesn't work: ok, then leave it blank. - try on windows. - + pgfplotstable: the '[b]' option is mysterious in output listings. Hide it - there! - - pgfplotstable: show how to use '\begin{longtable}' - + gnuplot + parametric is not documented. - + table + error bar expr - + document examples for 3d LINE plots. - + the 'tick label anchor' is something which I do not understand myselfes. - It was some ad-hoc fix for something, but for what!? - there is a fixme in the manual - + document the external lib -- it is now part of pgfplots! - also document the file href thing - + the '\x mode' key is hard to find. The same holds for 'log basis \x'. - + docs of clickable lib is not up to date (for log basis \x) - + document the trafo shift of scatter/@pre marker code. - + compat mode - -> perhaps in preliminary section. - + 'variable y' - - label placement methods: - + '[xyz]label shift', - + 'ticklabel cs', - + '[xyz]ticklabel cs', - + special anchors - + 'near ticklabel', - + 'near [xyz]ticklabel', - + special 'sloped' feature - + '/tikz/sloped' for labels, - + '/tikz/sloped like [xyz] axis' - + every 3d description - + every 3d view {<h>}{<v>}/.try - + the legend feature for mesh/surf plots: - 'every mesh legend' style and the default 'legend image code' - + document how to make line plots in 3d - + perhaps: display KNOWN key paths in key definitions in gray, not in red? - + check if area cycle list is documented - + nodes near coords - + the 'cube' mark and its parameters 'cube/size [xyz]' - + provide a TEXMF config file which sets appropriate limits! - + document the anchors which are only local to an axis! - - document how to fix problems with overlapping axis labels. - + add 3D scatter plot examples - + there are still several FIXMEs in the docs - + provide sample config file for miktex and document how to enable it - -> necessary if someone wants to use the external lib! - X document which is the default view of matlab or gnuplot! - + document the 'to listener' feature. - + \pgfplotsmathviewdepthxyz and \pgfplotsmathfloatviewdepthxyz - + document the trafo shift of scatter/@pre marker code. - + provide direct pdf link to pgfplotstable.pdf as in hyperref? - + check if area cycle list is documented - + nodes near coords - + the 'cube' mark and its parameters 'cube/size [xyz]' - + provide a TEXMF config file which sets appropriate limits! - + the 'surf' and 'mesh' plots belong to /pgfplots, not /tikz. - + it is not documented how to provide braces exactly in parametric plots - + the key prefix checker in docs is broken, see /pgfplots//tikz/sloped like x axis - + finish the auto-generation of hyperlinks: - + something like |\pgfplotsset{| doesn't work properly: - + the argument will become '' - + the UI introduces closed braces - + replace \declaretext and |...| things by appropriate macros. - + disable this expensive stuff during image externalization - + generate labels for command keys, commands and environments automatically - + check if it is possible to create links within codeexamples automatically or semiautomatically - + document the macros - + verify that the spacing is not affected by the new labels - - the cycle list args could be highlighted -- but leads to bug! - + document some important pgf macros somewhere: - \pgfmathparse, \pgfmathresult, \node, \matrix, \tikzset, \pgfeov, \pgfkeysvalueof, \pgfkeysgetvalue, - /tikz/xshift, /tikz/yshift - + it would be interesting to parse coordinates '(...)'. - + the \pgfplotsshortxystylekey things need to be adapted. - + optimize manual for display speed by reducing complicated 3D plots (interp shadings) - -> the old shader=interp values are still there, with comment signs! - Check them! - + document 'allow reversal of rel axis cs' - + document unbounded coords key - + document z buffer - + document 'plot box ratio={<x>}{<y>}{<z>}' (for 3D axes) - + document support for nonuniform colormap specs - + |log basis [xyz]| key - + scatter src vs point meta - + 3D - + view and its subkeys az and el - + color bars - + document that 'shader=interp' produces smaller pdfs, requires less time to - typeset in TeX and produces less time to display in acroread. - At least for large grids. - + \addplot now detects behavior options and style options automatically - + there are a lot of reference to behavior (or behaviour) options in the text - + document expression plotting in plot table - + meta expr (does that need another name!?) - + 'axis description cs' - + colormap access=map|direct key. - + document simplified format of colormaps - + changes in alignment - + end-of-scanline markers - + 'rel axis cs' - + API for \pgfplotspointouternormalvectorofaxis - + API for - + \pgfplotsqpointoutsideofaxis - + \pgfplotsqpointoutsideofaxisrel - X \pgfplotsqpointoutsideofaxistransformed - X \pgfplotspointoutsideofticklabelaxis - X API for \pgfplotspointticklabelcs - + API for \pgfplotsvalueoflargesttickdimen - + API for \pgfplotsticklabelaxisspec - + API for \pgfplotspointunit[xyz] - + API for \pgfplotsconvertunittocoordinate{[xyz]}{dimen} - X API for \pgfplotsqpointxyzabsolutesize - + API for \pgfplotsunit[xyz]length - + API for \pgfplotsunit[xyz]invlength - + API for \pgfplotspointaxisorigin - + API for \pgfplotspointdescriptionxy and the q variant - + API for \pgfplotspointaxisxy - + API for \pgfplotspointrelaxisxy - X API for surf shading library - -> document the problems with pdf2ps for surf shading! pdf2ps samples - that stuff manually instead of producing level3 postscript! - -- clickable lib: - I have the impression that acroread fires warnings only for the manual - not always when the clickable lib is used. Why!? - -------------------------------------------------------------- -PGF / TikZ Development: -------------------------------------------------------------- - - consider a matrix style which applies only to the outer matrix node style - (see feature request - https://sourceforge.net/tracker/?func=detail&atid=1060657&aid=3019259&group_id=224188 - ) - - code 2 args doesn't work correctly with spaces between the arguments!? - + provide '\times' or more general formatting rules to number printer - + external lib: implement \tikzpicturedependsonfile#1 - + in pgfplots: invoke \tikzpicturedependsonfile. - perhaps the plot-from-table-struct should also use it. - + external lib: 'list and make' does not work together with \include (aux files!) or other file writing things -- at least not if one tries to do that in parallel. - + consider the "plot function" patch from Andy Schlaikjer - + it seems fadings don't work correctly with externalization!? - - include addition of Christophe Jorssen for MD5 checksums in external lib - + write new sub-package 'pgfmanual.sty' which contains a good user interface to the manual styles, environments and all that. - + external lib: catcode changes inside of pictures do not work properly. - - the fpu can't be used inside of paths. That should be fixed. - -> the problem is that paths may use \pgfmath... routines directly. - -> this should work! At least with the public math macros \pgfmathadd. - The \pgfmathadd@ might be implemented differently. - + in the manual, the first two arguments of - pgfqkeysactivatesinglefamilyandfilteroptions were inverted. - + some predefined filters do not process unknown options correctly - + external lib in pgf: think whether 'empty image extension' is a bug or a - feature. - -> feature of \pgfimage! Otherwise it wouldn't be possible to provide an extension! - -> bug for external lib which never uses extensions! - - fix landscape bug (pdflscape) in external lib (PGF) - + the pgf math parser has wrong precedence for '-' prefix op: - exp(-x^2) is wrong. - - pack the default 'system call' for dvips etc into drivers! - - active '|' characters result in compilation bugs (\usepackage{program}) - - 'text height=1em' realisieren mit [node font units]1em - -- compatiblity code todo: - - the example for plot graphics (with view=0{90}) doesn't work. - -> that's the 'exp(0-x^2)' bug which is still in pgf 2.00! - -------------------------------------------------------------- -BUGS / FIXES -------------------------------------------------------------- - -- groupplots + extra braces or \foreach are incompatible. - -- clickable and Windows Acrobat Reader 9 has been reported to fail - -- /pgfplots/samples at and /tikz/samples at work on the same axe. Tantau says that this key support \foreach statement and thus the dotes notation. Howerver, when I want to use two or more different dots notation within pgfplots, latex crashes ! -Here is an example which clarify this issue : -\addplot+[mark=none,variable={\t}, samples at = {\foreach \x in {0,10,...,180,200,...340} {\x, }360}] ({sin(t*2)}, {cos(t)}); - -- potential incompatibility: clickable and external. The clickable lib writes - into pgfplots.djs which might cause multithreaded problems. - -- groupplots: mixing 2d/3d in one groupplot doesn't reset 'zmin,zmax' ? - - -- 'clip=false' does not disable marker clipping! - -- mark position clipping may fail: see - \begin{tikzpicture} - \begin{axis} - \addplot3[surf,shader=faceted, - scatter,mark=*, - samples=10,domain=0:1] - {x^2*y}; - \end{axis} -\end{tikzpicture} - in the manual (shader docs) - -- multiple ordinates: grid lines are drawn on top of function plots; that's bad. -Check: - I think you have to change the process line previousely invoked, and make the axes generation at the end : -1. generating adequate grid --> 2. plotting functions --> 3. creating axes, tick nodes... -You can take a minute look at figure 1 @ "The \addplot Command: Coordinate Input" section 4.2 p 19. -and you can remark that colour filling overlaps x- and y-axis ! So I suggest that you use "excute at end picture=<axis generation code>" tikz option or similar to avoid this issue. - -- patch plots: type rectangle & shader=interp & mesh input=patches doesn't work - correctly as it seems. - -- 3D axes: it is difficult to get an 1:1 correspondence to tikz. - -- 3D axes: providing three unit vectors is not sufficient, one also needs to set - 'view={}{}'. That should be done automatically. - -- 3D axes: Providing three unit vectors manually yields incorrect axis - initialisation. - -- 3D axis: provide support for manual axis configuration, - - depth (n vector), - - foreground/background, - - tick label axes, - - ... - -- Patch plots: directly transform cdata. Should simplify interpolation during - refine/triangulation etc. and shouldn't make a difference otherwise. - -manual errors of given pgfplots_unstable version: - 94 2.5.12 \addplot+[patch] --> \addplot3+[patch] -162 "xmode, ymode, zmode" and "x dir, ..." - come again on page 177 - -- don't loose \ref's when externalizing - I'll provide a minimal later - - -- incompatibility pdfpages (most recent version), MikTeX and tikz external lib - (something with shipout routine) - -- plot graphics: \ref legend doesn't work properly - -- french babel and colorbars are not fully compatible. The problem is that - colorbars use '\addplot graphics {};' with a fixed catcode for the ';' -- - which might lead to problems. - -- \ref{} legends for 'surf' in unstable version do not work properly - -+ plot graphics braucht - every legend image post/.append style={sharp plot} - -- markers should not be drawn on top of everything else. Always restore the - clipping region for each plot. - -+ extra ticks need a scope to enable drawing options: - \begin{axis}[ - extra x ticks={0.7}, - extra x tick style={ - line width=3mm, - color=red, - tickwidth=3mm, % <-- only thing applied - }, - ] - \addplot coordinates { (0,0) (1,1) }; - \end{axis} - - -+ new coordmath framework is broken for log basis. - TODO: 1. the functions must be parameterized with A) the coordmath class *and* - B) the coordmathid. - For example 'pgfmath,x' and 'pgfmath,y'. Everything else doesn't work... - -- \ref and detached legends/colorbars do NOT work with external library and - convert with system call. - -> provide special handling! - -+ providing 'thick' to linespecifications causes problems during the survey - phase: \pgfmathsetlength{} will use the FPU. - -- shader=interp,z buffer=sort ---> should use 'shader=faceted interp,faceted - color=none,z buffer=sort' instead! - -- mesh/patch plots: - - jump thing + z buffer=sort probably doesn't work - -- ternary axes: the 'marker clipping' doesn't work (naturally) - -+ shader=interp: I stumbled over a data set for which gv,xpdf,kpdf and acrobat - bail out with an error. (data file in feuersaenger's thesis) - ---> That's y varies! For x varies, it works! - -- polar axes: - + is wrong since 'near ticklabel' anchor uses pointunitx which is not correctly initialised for polar axes. - - axis equal - + data scaling needs to be disabled for X axis. - + auto tick labels work only for the case of disabledatascaling - -- contour: - the table/meta=2 default is wrong. - -- OK : 'every node near coord/.append style={scale=0.7}' - NOT OK: 'every node near coord/.append style={scale=0.7},ybar' - --> sequence of shift and scale matters ... - -- french babel and colorbars are not fully compatible. The problem is that - colorbars use '\addplot graphics {};' with a fixed catcode for the ';' -- - which might lead to problems. - -- OK : 'every node near coord/.append style={scale=0.7}' - NOT OK: 'every node near coord/.append style={scale=0.7},ybar' - --> sequence of shift and scale matters ... - -+ shader=interp: I stumbled over a data set for which gv,xpdf,kpdf and acrobat - bail out with an error. (data file in feuersaenger's thesis) - ---> That's y varies! For x varies, it works! - -- dimension too large sanity checking: TeX uses the maximum value instead. - Perhaps that can be checked? - -- provide remark at end document "Package pgfplots: consider using the preamble - command \pgfplotsset{compat=1.3} to improve label placement" - -- there are a lot of .code 2 args styles which do not support spaces between - their arguments. Fix this. - -- colormap serialization has N^2 runtime. - -- `1.23456e4;' in a log plot resulted in hard-to-read error messages. Improve - sanity checking here. - -- stack plots + log scale is wrong: it stacks visually, but that's more or less - meaningless. Try - \begin{tikzpicture} - \begin{semilogyaxis}[ - ybar stacked, - ymin=1e1, ymax=1e6, - ] - \addplot coordinates { (1,100) (2,100) }; - \addplot coordinates { (1,100) (2,1000) }; - \end{semilogyaxis} - \end{tikzpicture} - -- the title style for 'footnotesize' is not as I want it to: it doesn't respect - the depth below the baseline. Or does it need a \strut? - -+ the 'enlarge x limits={abs=3}' key doesn't work: it increases the lower - limits, but it doesn't draw any tick labels (neither major nor minor) - - -+ portability of externalized \label commands: define \tikzifinpicture which - should be part of the external separate package (in which case it is always - false). - -- avoid dimension too large errors which occur due to a data range restrictions. - Example: - data range = 0:6000 - view range = 0:1 - -> results in error. - But that's easy to detect! Just compute the point coordinate in float (after - the scaling is complete). Then, install a filter somewhere. perhaps an "a - posteriori" filter in the pointxyz command? - -- the 'colorbar sampled line' and 'colorbar left' styles are incompatible: - there are no tick lines. - -X bug in linux printer drivers: colorbar shadings are not interpolated - correctly, the interp shadings work (also the colormap sampled style). - Version: - Linux 2.6.24-26-generic #1 SMP Tue Dec 1 17:55:03 UTC 2009 x86_64 GNU/Linux - - -+ the colorbar with surf mode is too short; the 3D colorbar axis won't be scaled correctly - -- the 'at' key appears to be broken. It happens if - - pgf 2.00 is used, - - at=(anode) is used where (anode) was originally in a different axis - -- the autodetection of the '\\' list format is buggy: it should return true if - and only if the last element is '\\', not if '\\' occurs inside of the - argument. - -+ gnuplot compatibility is broken since gnuplot 4.4 changed its table format for - logscale. Excellent. - -+ the \pgfplots@ifgridlines@onorientedsurf@should@be@drawn#1#2 is WRONG. - It works ONLY for boxed axes. All others need special handling... - -- table package: - using a non-trivial 'every table' style combined with - \pgfplotstabletypeset[begin table/.add={}{}] - yields a bug: the .add is invoked twice (since the 'every table' stuff is - invoked twice). - - -- yticklabels={<list>}, extra y ticks={...} is incompatible since the extra - ticks share the same tick typesetting routine (which, in turn, queries the - <list>). - -- '\addplot[only marks]' does not assign a plot mark; one needs 'mark=*' - explicitly. that's confusing... - -- The 'text depth' in legend entries is incompatible with 'text width'. - The problem: text width is realized using \begin{minipage}[t] - so its contents is all in the depth. Setting text depths overrides the - height! - -- the '/pgfplots/table/.search also' is overwritten during \addplot table with - /.search also={/pgfplots}. That's not so good. - -- one can't provide 'disable log filter' to \addplot (but it might be - interesting) - -- FPU: atan doesn't check for unbounded inputs. - -- unbounded inputs: improve warning messages: they should not contain low level - FPU args. - -+ in tick label reference: the example with \nicefrac has ymajorgrids, but - doesn't display them! Check! - -- parametric gnuplot plots do not work correctly (see mail of Gabriel Lera) - -> require user interface method to set 'variable' and 'variable y' for this case. - Default should be 't' and 'u,v' ! - -- the user interface to set 'tickwidth=0' for a SINGLE axis is not very good: it seems one needs 'xtick style={/pgfplots/tickwidth=0}' to do so... - -> can be solved if tickwidth has a family, I guess. Something like 'draw' which will not be pulled by pgfplots. But then remains a problem of key paths. - - -+ the tick pos stuff works (puh!) - However, there is an inconsistency with the axis lines stuff: - 'axis lines=left,tick pos=right' - will yield almost the same effect as 'axis lines=right'. However, the - 'axislinesnum' still assumes it is at the left. - Thus, there are potentially some inconsistencies... - -> BUT THAT'S LOW PRIORITY - -+ tick align=outside doesn't seem to affect the ticklabel cs although it - probably should (tests in pgfplotstest.axislines.tex). - -> check also display styles for labels! - -+ manual: 'label style' and 'xticklabel style' are not auto-crossrefed - -+ extra ticks do not work with '3d box=complete' - -- the FPU has somewhere spaces; at least it treats them differently from \pgfmathparse. - -- I have seen that 'plot table' with very large files can produce pool size problems -- even if the coordinates are all filtered away. - In other words: the code can't simply read a file and throw its contents away. - The problem appears to be some math parsing using the table/x expr and friends. - 'pool size = names of control sequences and file name' - -> the math parser could be improved with \ifcsname - -+ I had just a problem with 'log basis y=2' : the x axis also used basis 2, but minor ticks basis 10. - It was the second plot; the first had also log basis x=2 - -> the problem is the 'log basis ticks' style which changes 'log number - format code' globally for the axis. - -- axis lines and 3D: some tick lines are not drawn, see manual examples - -- check for placement of tick scale label for compat=newest - -> I improved them for 2d and 3d - -> needs some further checks, I guess - -+ reversed axes: - + color bars can't be reversed; the shading disappears - + reversed axes and centered axis lines: - the label placement style is incompatible. - - axis lines=center + reversed axes: the tick labels are placed somewhat - too near the axis... see the test in alignment subsection of testcases - -> perhaps the "normal vector" points into the wrong direction? - -> It is the tick@offset computed in the tick label placement - routines. I have implemented special handling for this case, but I - do not really understand the problem. - FIXME - - tickpos is wrong - -+ coordinate filters for log axis are not as documented: the 'unbounded coords' key won't be processed correctly. - - -- providing zmin/xmax to an axis activates 3D mode, ok -- but lower dimensional input routines appear to fail. - -- one can't provide 'scale' as argument to a (3d) axis - - -+ axis line variations: they pose problems for - a) 3d axes - b) reversed axes. - - -+ The Adobe Reader crashes on p 68 of the manual (while Foxit shows and -prints without complaint). 27.11.2009 reported by J. Goebel - -+ check the old code with 'pgfplotsautoanchor' for tick labels. - Is that still up-to-date? NO - Perhaps it should be replaced with something better? YES - -+ recently, I used \pgfplots@command@to@string. But: for arguments like `\table' this yields `\table ' including a space. Check if that poses harm. - -+ the pretty printer appends '{}' to known csnames. -+ the pretty printer appends ')' to |(| -+ the xref to |scatter src| is broken... why? - -+ \thisrow inside of column creation does not respect aliases -- \getthisrow still has to be fixed - -+ the \pgfplotsretval key is uses globally and locally. Fix that. - There is also \pgfplotslocretval which should be eliminated. - Better: use \pgfplotsretval for local ret vals and - \pgfplotsglobretval for global ones. Better still: avoid global return values if possible. - -- it may still happen that log-axes get only *one* tick label (in my case 10^{-0.2}). That should never happen. - The range is about ymin=4.7e-1, ymax=9.5e-1 - -+ 3D and special axis lines doesn't work at all. - -+ sanitize 'plot file' by appending '0' coordinates at the end of the current line - -+ the 'z buffer=auto' key in every mesh is stupid. What if I don't want it!? -- log samples in plot expression for 3D plots -- different log bases and gnuplot -+ 3D gnuplot: z buffer fails (see tests) - -- I tried placing a named coordinate inside one axis and using it in - another. It failed. - % CF: The axis is drawn inside of its own picture which will only be shifted if everything has been drawn. That will be the origin of this problem I guess - - Miraculously I can use the coordinate outside axis env. So I have - reached the following solution: - -+ allocate a \newread for input files to avoid compatibility problems with other packages. - -- the compatibility things should be enabled automatically for some parts: - - 3D - - color bars - - reversed axes - -- plot coordinates doesn't check too well if - 1. \addplot3 is used but only two coords are given - 2. \addplot is given but three coordinates are provided (also for plot expression) - -+ gnuplot: set terminal table seems to be deprecated. -- gnuplot and 3D - -> I need a shared interface to prepare the required keys for expression plotting -+ scatter/pre mark styles should OVERWRITE the current setting instead of append. Provide additional keys with suffix '*' which provide the "append" feature. - -+ if view leads to ||e_i| == 0, this results in an error somewhere (infty - occurs) - -X change UI of ticklabel cs: provide an option 'ticklabel cs:[<interpreter>]<coord>,<dist>' which specifies how to understand "<coord>". Choices: - - 'display' - - 'rel coord' - - 'abs coord' - is that really useful ? - -+ plot3 table: the scanline detection does not always work (seems to need an empty line as last line) - -+ the \pgfplotsdeclareborderanchorforticklabelaxis does not work if someone changes the shape! The shape changes occur AFTER my command. - -> solution idea: implement some sort of "unknown shape handler"! - -+ 3D: very long labels are not completely correct: they may run into the axis. - -- the compat things are not yet complete: I wanted to check when it is really necessary (for example if 'x dir' is used) - -+ the 'check tick show thing doesn't work for non-boxed axes! - -+ BUG IN \jobname with " --->> IS INVALID -+ there is 'samples y' and 'variable y' but 'y domain'! - -+ ich habe gerade das Problem, dass ich fuer einen Plot nur eine - y Achse moechte. Ich habe "axis y line=right" gesetzt. Nur sobald - ich "axis x line=none" einfuege, verschwinden die Tickmarken an - der y Achse... - -- the nodes near coords feature produces unexpected results when used together - with markers -> this is due to the default configuration of scatter plots. - - -+ provide a meaningful error message when mesh plots fail due to unbounded - coords - I don't want to waste time with checks. (could I optimize the - checks??) - -+ I have removed the 'surf' option from \addplot3 {...}; -> check it ! it - should be moved to some default style; maybe cycle list or so? - -+ the auto z buffer may lead to errors if cols and/or rows is empty. - -+ FPU and '<' operator didn't work!? - -+ the 'prepare@#1coord' doesn't check for unbounded coords. Besides, it appears - to be wrong - maybe I should rewrite it. - -+ one my recent changes leads to 'meta data 25.000' is unbounded for whatever - reasons. Furthermore, \addplot3 {x^2}; lead to a bunch or error messages. - -+ forget plot and legends do not work - -- check whether /pgfplots/ keys are processed properly in legends. This is - certainly not the case for the \label/\ref legend! - -> which ones are the problem? -- the ybar style won't be set inside of \label{} - - - -+ providing 'ybar stacked' to the axis and 'ybar' to each plot seems to cause - problems (see test case per Mail) - -> that's because the '\addplot' ybar can't distinguish between /tikz and - /pgfplots paths! - + To stay compatible, I need to make sure that \addplot[ybar] actually uses - \addplot[/tikz/ybar]. That's how it is documented. - -+ colorbar impl: - + determine correct height such that it has the same as its parent. - + determine all styles which need to be inherited. - + fix the style-restore routine! It eats too many '#' chars! - - -+ the 'plot table' detection of gnuplot files is buggy - it can fail for example - if there are 2 comment lines and 3 columns (with headers) - -+ the xtick=data feature doesn't check for double occurances. - -+ It appears the (new) placement of tick scale labels is wrong for 2d axes. - -+ the '[xyz]ticklabels' key does NOT work any longer! It fails if some of the - ticks fall outside of limits. - -+ the meta stuff is not sanitized: check for NaN or INF. - -+ z buffer=sort does not respect LOG axes properly! - -+ z buffer=auto should be added. - -+ table package and unbalanced columns appears to be buggy. - -> need use 'nan' - -+ I observed problems with the 'title' placement in 3D plots!? - -- axis equal for semilog plots is not correct (?) -+ something is wrong with the log basis stuff. Did I mess something up!? - + fix this! For reasons of compatibility, it might suffice to modify the - clickable lib since the display of the plots is correct (base 10). Any - internal UI special cases might still rely on base e (and it might be more - efficient to rescale just tick labels!) - - document that special handling to reduce confusion! - -+ context incompatibility: \definecolor is defined differently in context, leading to bugs (occurs for 'mapped color') - -+ - \pgfplotsset{every axis/.append style={font=\footnotesize}, - tick label style={/pgf/number format/1000 sep=}, - xticklabel={\pgfkeys{/pgf/fpu}% - \pgfmathparse{round(exp(\tick))}% - \pgfmathprintnumber{\pgfmathresult}}} - - to see the real tick numbers in a semilogxaxis, but when I use the former - fake plot as the first of my plots, it behaves as if I hadn't used these - options. When written in any other position it works as expected. - - More specifically, this only happens when using xtick=data. If the ticks are - specified as a list, the bug doesn't show up. - - -+ there is 'ticklabel dist' and 'label shift'. Use the same naming convention! - -+ 'shader=interp' still does not support 'ordering=colwise' - -+ 'view={0}{90}' does not set label styles correctly - -- backwards compatibility problem: - axis descriptions can't contain /pgfplots/ styles any longer! This is a key - path issue :-( - -+ the clickable lib output is shifted somehow (at least for log plots). It - appears it does not respect the new alignment stuff properly. - -+ the 3d labels still need a good initial style - and a user interface to set - it. - idea: 'every 3d axis' is a style which can set axis descriptions or tikz keys. - + all descriptions styles need to be set up before they are used. - + changes to these styles may only be done when the axis' dimension (d=2 or - d=3) is clear - and the associated initial styles are installed. Then, - modifications may be applied. - Idea: implement all that stuff when 'every axis' is used. But that has - '/tikz/' has default search path... - -+ I fear plot gnuplot may not reflect the latest changes - at least not for 3D! - + log basis - + plots R^1 -> R^3 (parametric) - + plots R^2 -> R^3 (parametric) - -> may require 'u' and 'v' - + using other variable names (see 'set dummy') - + ydomain is not set - -+ the \x, \y, \z etc. macros in the table expression plotter should be - eliminated! They pose name conflicts. - -+ the '/tikz/variable' key can't be provided as argument to an axis (missing - family) - -+ the tick scale labels need to be placed with 'ticklabel cs'. That's difficult, - but necessary. - + 2D - needs to be improved! - + 3D - -+ the color bar is an "axis description" -- but it can't be placed like other - axis descriptions! - -- BACKWARDS COMPATIBILITY BREAKDOWNS: - 1. reversed axes with "manual hacks": - - the description cs won't be reversed for negative axes, - - the anchors won't be reversed for negative axes, - - the 'ticklabel pos' key is no longer reversed for reversed axes, - 2. Skewed axes - - the description cs won't be skewed for skewed axes (and it should not), - 3. the tick label positioning may not work as before. - - possible solution: write the required "activation" option into every code example! - -- the backwards-compatibility issue can be solved by - - a '/pgfplots/labels near ticks' style whichs sets [xy]label style - - a '/pgfplots/labels absolute' style for the "classical" default - - small text below (above?) every code example - "% preamble: \pgfplotsset{labels near ticks,width=7cm}" -- the "reversed axis" backwards compatibility problem could be solved by - a special mode which restores the old, deprecated handling of - - anchors, - - description cs, - - tick label positioning, - - ... - this could be checked easily: if x<0pt (or y<0pt), the backwards compatibility modes must - be enabled otherwise it is an error. -- Ideas: - restore ALL OLD features and provide them using a compatibility interface! - - The compatibiltiy interface operates using pgfkeys and simply exchanges - implementations with \let. - - I should derive conditions which require a choice between compatibility - mode and normal mode. - + UI: - compatibility/<feature name>=before 1.3|newest - compatibility=before 1.3|newest (a style which sets all) - + I suppose this affects - + \pgfplotspointdescriptionxy - + the "real" anchors - -+ I need a solution to rotate labels correctly and make alignment in a good way - -> probably the "sloped" method of pgf? - - -+ I fear the 'plot gnuplot[<opts>]' thing does not properly process <opts>. - -+ what happens if 'point meta [min,max]' is provided inside of \addplot? - -+ it appears the recent changes update the bounding box - disabling overlay for - tick labels - -+ the 'legend image code' is again buggy! Try ybar! This here is the reason: one - can't set draw/fill mode from within a scope! - \begin{tikzpicture} - \scope[fill=blue,draw=red] - \path (0,0) circle (10pt); - \endscope - \end{tikzpicture} - - -+ the 'x={(x1,x2)}' option(s) are buggy: the complete vector length needs to be - scaled by the datascaling routine, not the single components. - -+ ticklabel interval stuff doesn't work properly - -+ potential problem with stacked y bar and semilogyaxis, see bug report per Mail - -+ stacked plots do not sanitize the input arguments: it may happen that too few - (or too much) coordinates are given. - -+ Memory limitations in MikTeX: - see http://blog.antiblau.de/2009/04/21/speicherlimits-von-miktex-erhoehen/ - -+ shader=faceted must be provided after 'surf'. That's not what I wanted. - ideas to fix the problem: - 1. introduce a further 'mode' which enables drawing and/or - filling for meshmode. - So, 'mesh' would set fill to false and the fill color is irrelevant. - For 'surf', the state could depend on the current shader - either - only the fill color or both, fill and draw color will be used. - -+ BUG: empty axes and one of my newer changes (bblowerleft) conflicts. - -- BUG: in empty axes, 'xtick=\empty' is ignored. - -- finish impl of ticklabel pos. - I should use the same thing for tickpos as well. - And: the default arg processing which uses ticklabel pos = tickpos needs to be - fixed. - the 2D axes are wrong. - - -- The automatic tick labeling sometimes produces inconsistent or confusing - labels: - 1. engineering and fixed number style are mixed up. - 2. If range of an axis is so small that the labels differ only on the third - decimal, still only two decimals are used. - -+ axis y line=right, FAILS to produce correctly placed tick - labels -> only in manual!? - -+ ymin=0.9 is ok while ymin=.9 is not ok -- update number parser. - -+ legends are currently broken! - -+ the tick labels on axis boundaries are often missing. I suppose this is due to - rounding inaccuracies or '<' instead of '<='. check that! - -+ new alignment: origin anchors for unfinished axis is not updated. - -- 3D: axis equal implementation might not be correct (at least not for view - special cases) - -X perhaps the ASCIIHexEncode would be a useful addition for the pdftex driver of - surfshading as well...? - no, it isn't. pdf2ps still generates huge sampled postscript files. - -- 3D: - error bars and - stacked plots - need to be updated. - -- the \thisrow commands in the table package does not (always) respect aliases! - -+ check for the @non@legend@options - I suppose they are deprecated now and - waste computation time. - -+ the new key processing which skips every /tikz option in \addplot might not be - correct - there are several plot related exceptions like /tikz/id etc which - SHOULD be processed. Make sure I have all of them. - Besides: what happens if someone uses /tikz/draw explicitly? I am not sure if - that hurts... -+ the recent search path construction WILL also set tikz options during - \addplot. - There won't be any paths during \addplot - but I am not sure if there can be - any scoping problems related to the graphics state. - -> that stuff produces problems with /tikz/ybar vs. /pgfplots/ybar! - - - -+ the view argument should be similar to gnuplot /matlab. I fear I have - exchanged some of the directions. - In matlab, the argument is '{yaw}{pitch}' instead of '{pitch}{yaw}' - Furthermore, the rotation axes are different. view={0}{0} in matlab shows - the x axis horizontally and the z axis vertically - the view direction is - (0,1,0) -- for me, this would be (0,0,1). - -+ pdf2ps still fails for interp shader - it has a limitcheck exception. Perhaps - the number of bits is too large for ps? - -> a very small stupid test with 8 bits per coordinate and 8 bits per cdata - worked - -- interp shader is displayed transparently in evince - -+ clickable plot lib produces visual artefacts in acroread - -> the 'hidden' flag appears to be incompatible with figure environments!? - - fixed in recent hyperref drivers of pdftex; was actually a bug of hyperref - -- 3D: the use of \addplot3 and \addplot is not sanitized properly - Possibilities: - - used \addplot when \addplot3 should have been used - - used \addplot3 where \addplot should have been used. - What can happen here!? Shouldn't this work in every case? - - -+ the 'current axis' node is not defined until the first axis descriptions are - drawn. That should be fixed by defining the low-weight shape before processing - the stored path commands. - -+ The following fails: - \addplot+[ - black] plot coordinates { (0,0) (1,1) }; - -- The "xtick" value is not applied unless there is a coordinate in the x range: - -> that's the handling of empty figures... - - not working: - - \begin{axis}[xtick=0] - \end{axis} - - not working: - - \begin{axis}[xmin=-5,xmax=5,xtick=0] - \end{axis} - - not working: - - \begin{axis}[xmin=-5,xmax=5,xtick=0] - \addplot coordinates { (-10, 0) }; - \end{axis} - - - working: - - \begin{axis}[xmin=-5,xmax=5,xtick=0] - \addplot coordinates { (0, 0) }; - \end{axis} - -- think about basic level commands for the axis lines -- this should also allow - \pgfpathclose ! - - -- 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). -- check behavior options provided to table[] and file[] and so - is that - correct? - - -+ the \ref command should be \protect'ed in LaTeX captions - -+ the ticklable dist feature NEEDS anchors. - - -- 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!? - - Possible fix: - Overwrite \filltrue \fillfalse, \drawtrue, \drawfalse: - they should set a further boolean '\drawbooleanhasbeenset' and - '\fillbooleanhasbeenset'. - -> Replace the \pgfusepathqfillstroke if and only if the respective - booleans have been set *explicitly*. If they are unchanged, fall back to - a "reasonable" default. - - -+ 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! - -+ 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) - - -X 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 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! - -+ 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 - -> yes. That's fixed; was a bug in hyperref. - - I could try to re-implement it without insdljs. - Ideas: - - the document catalog's names dictionary needs to '/JavaScript - [(<arbitrary script name>) <dictionary with JS>]' entry. - The <dictionary with JS> contains document level javascript. - - it is very simple to generate these entries for my case. - Unfortunately, this may be incompatible with 'insdljs' or other tools - which write DLJS. - - I am not sure why the floating figures of TeX produce an - incompatibility here. It appears the 'hidden' flag in the form fields - are the problem - if that is the case, I'd need to reimplement the - form annotations (which could be more difficult). - -- 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. - - - - -+ 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 - -- 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 - -+ that first/last coord detection doesn't work for 3D - -------------------------------------------------------------- -FEATURES -------------------------------------------------------------- - -- nested axes would be a nice feature. - TODO: - - update the list of global state variables - - "interrupt" these variables somehow. - - make sure local redefinitions of TikZ commands (like point commands) - work; the \let...@orig= assignments should be handled somehow. - - What about keys? They will be inherited from the outer axis... - perhaps the best would be an - \endgroup - <nested axis> - \begingroup - <restore state> - which includes the keys of the outer axis!? - -- support for "spy"glass into particular parts of an axis - -- groupplots: group-wide axis labels - -- It would be really great to have the possibility to attach a style to every nth row of a data table. For example, I would like to have a \midrule not after every line or after odd/even lines but after every fifth (or whatever) line. - - - -- new \plotnumofactualtype thing: if you set /tikz/ plot handlers in - \begin{axis}, they won't be set before the visualization phase. consequently, - I can't con't them! - Idea: add a 'family' to each of them. Or wright a coord filter which checks - for \tikz@plot@handler . Or write pgfplots styles which set them. - -- improve access to `create on use' things in \addplot table. - Ideas: - - check if a `create on use' statement for table/[xyz] exists, if so: load the complete - table. - - allow a simplified syntax like 'y=create col/linear regression{<args>}'. - This should be possible; just introduce a temporary name (or column - index). - -- Mail by Hubertus Bromberger: - + Period in legend, without the need of using the math environment? - \legend{ML spcm$.$, CW spcm$.$, ML AC}; - - Maybe a more straight forward way for legend to implement something like - shown in the graph. (see his mail .tex) - -> plot marks only at specific points. - thus, the legend image should contain both lines and marks, but there - are effectively two \addplot commands. - - As a physicist, I often have the problem to fit curves. A job gnuplot can do - very well. It should be possible using "raw gnuplot" but maybe you can either - provide an example or even implement a more straight forward way for this - purpose. - - The color scheme is not really my taste. - In CONTEXT: - cycle list={% - {Col1,mark=*}, - {Col2,mark=square*}, - {Col3,mark=diamond*}, - {Col4,mark=star}, - {Col5,mark=pentagon*}, - {Col6,mark=square*}, - {Col7,mark=diamond*}, - {Col8,mark=triangle*} }} - - \definecolor[Col1][r=0.24106,g=0.05490,b=0.90588] % blau - \definecolor[Col2][r=1,g=0.05490,b=0.06667] % rot - \definecolor[Col3][r=0.65490,g=0.73333,b=0.01176] % grün - \definecolor[Col4][r=0.08627,g=0.92549,b=0.91373] % tyrkis - \definecolor[Col5][r=1,g=0.5,b=0] % orange - \definecolor[Col6][r=0.54118,g=0.51765,b=0.51765] % grau - \definecolor[Col7][r=0.80784,g=0.49804,b=0.06275] % okker - \definecolor[Col8][r=0.74902,g=0.07451,b=0.91765] % lila - - Sometimes it would be good to have a bit more of a programming language, but - still that's not what tex is made for. The python-script looks promising, it's - just, that I think it doesn't work with context. - -- add something like - \pgfplotstabletypeset[ - cell { 1 }{ 2 }={\multirow{*}{3}{text}} - ] - -- I got several feature requests for non-cartesian axes. - Perhaps there is a way to generalize the complete procedure... as far as I - remember, I use the pointxyz routines anyway to place tick marks and so on. - Perhaps it can be reconfigured to do something "advanced". - Idea: nonlinear transformation into the axis combined with special drawing - rotuines for the axis? - ternary diagrams - http://staff.aist.go.jp/a.noda/programs/ternary/ternary-en.html. - smith charts - http://www.mathworks.com/access/helpdesk/help/toolbox/rf/f2-999699.html - http://www.siart.de/lehre/smithdgr.pdf - -- idea: 'mesh/ordering=auto'. Just check for 'x varies' and 'y varies'! The two - first points inside of a scanline are enough. - -- it is possible to output contour data into files with gnuplot (and with - matlab): - unset surface - set contour - # set cntrparam ... - set table 'P.dat' - splot [x=0:1] [y=0:1] x*y; - unset table - # contour info now in filename -- contourf: I guess filled contour plots could be possible if always two - adjacent color levels are combined into a single path which is then filled - with the simplified even/odd rule (not the winding fill rule). With the - underlying smoothness assumption C^0, there can't be any level between two - adjacent ones, and there can't be self-intersections. -- it would be very interesting to allow more flexible handling of empty lines in - input data, especially files. - For example 'empty lines=auto|scanline|nan|jump' -> allows to use "interrupted - line plots" -> contour! - Implementation ideas: - - in table: check the mode. If "nan|jump" and "previous coord was no jump": - insert a "nan nan nan.... nan" line into the table. - - in plot coords: same, but it is simpler. - - perhaps I can implement the stuff like \pgfplotsscanlinecomplete: it - should stream a coordinate if it fails. The coordinate will use - x=inf,y=inf,z=inf and all remaining fields are kept from the last valid - coordinate. Should not hurt... - - the choice "auto" could be used as follows: - 3d plot ---> use "scanline" - 2d plot ---> use "nan" - -- interesting: add "path after line segment". Idea: allow nodes on the path - \tikz \draw (0,0) -- (3,1) - node[pos=0]{0} node[pos=0.5]{1/2} node[pos=0.9]{9/10}; - -> perhaps such a feature can be the low level implementation for contour - labels. - Problems: how should the positions be determined automatically? Overlap should - be reduced somehow. - furthermore, a contour uses more than one path... - - - -+ colorbar styles: - - colorbar flat - - colorbar faceted - -> use \addplot3[surf] to draw a colorbar - - colorbar scatter - -> use \addplot3[scatter] to draw a colorbar - -> requires to set samples, and to use plot expression. Should be enough... - -- implement simplified constructions to access DIFFERENCE coordinates. - For example, \draw ellipse needs x radius and y radius. - - -+ allow to anchor an axis at any labeled node inside of it (like for a matrix) - -- it might be interesting to fill the area between two paths. Perhaps there is - such a feature in pgf; or perhaps I can generalize the \closedcycle - implementation written for stacked plots. - -- provide a \numplotsperplothandler or something like that. This would improve - things for bar plots! - -- the 'table/y index' should be changed. It should be min(numcols,1) instead of 1. - -- table package & axes should improve their communication. - Namely: - - communicate table names. - - communicate xmode/ymode - - communicate log basis [xy] - -+ provide col sep=& - -- provide and document access to (sanitized?) mesh/rows and mesh/cols fields - during the survey phase. This might allow 2d key filters - -- Praktisch fände ich, wenn man folgende Dinge spezifizieren kann: - -1. Welche Zeilen aus der Datei ausgelesen sollen (häufig gibt es nicht -nur 1, sondern mehrere Header-Zeilen, oder auch am Ende noch sonstige -Zeilen) - -2. Welche Zeichen in der Datei schlicht ignoriert werden. - -Damit würde ich es mir sparen, mein Ausgabeformat anzupassen. -Derzeit ist dies jedoch für mich die einfachste Lösung. - -- the coordindex shouldn't be changed by z buffer=sort - -- table package: provide abstract layer for low level storage interface. - Idea: the interface should allow the container interface - - push_back() - - get(i) - - set(i) - - foreach() - - pop_front() - - newempty() - - clone() - - unscope() - - startPushBackSequence() - - stopPushBackSequence() - -> this could allow to use arrays for fast algorithms. At least it would make - things easier to read. - Problem as always: the 'unscope()' operation. - Currently, I have two different structures: the applists which have fast - construction properties and the standard lists which implement the rest. - Can I combine both? Yes, by means of the incremental construction pattern: - \startPushBackSequence - \push_back - \push_back - \push_back - \stopPushBackSequence - -> inside of the construction, only \push_back is allowed and the structure is - in "locked state" (low level: applist repr) - -> Idea: the creation is fast, afterwards, it has flexibility. - -+ external lib + makefile support: provide data files automatically as prereqs - -- support \multicolumn for legends - -- it appears line breaks in legend descriptions are a problem (?) - -> bug in pgf: \\ is overwritten and won't be restored. - -+ external lib + makefile support: provide data files automatically as prereqs - -- pgfplotstable file open protocol: provide public listener interface - -+ allow to advance cycle list(s) manually - -- \addplot coordinates {\macro}; - -- precise width calculation idea: - - Problem: total width depends on width of axis descriptions - - width of axis descriptions depends on position of axis descriptions - - position of axis descriptions depends on width of axis - - width of axis depends on width of axis descriptions - -> non-linearly coupled system. - - Idea: introduce a loop. - - details: - 1. place axis descriptions + the axis rectangle into a box. - 1.1 Measure box'es width, throw it away if it is too bad. Keep it and stop iteration otherwise. - 2. recompute the complete scaling. - 3. go back to step 1.) and iterate - -> one or two iterations should be enough . - -> it's not necessary to recompute the prepared and stored plots. Just keep them in main memory until the scaling is fixed. - -- bar plots: - - bar interval plot handler which *assumes* uniform distances. This allows to eliminate the last, superfluos grid point (because it can be generated automatically as replication x_last + h for known h) - - in fact, I could also implement - x_last + h_last - and introduce a new name like 'bar interval*' or something like that - -- Mails from Stefan Ruhstorfer: - 2. - Gruppierte Säulendiagramme sind nach meinem Wissenstand nur dann möglich wenn man in der Axis-Definiton die Bedindung ybar angibt. Ich finde diese Ausrichtung sehr unflexible, da ich sehr oft über das Problem stolpere, dass ich in meinem gruppierten Säulendiagramm noch eine waagrechte Linie oder ähnlichs einzeichnen möchte um z.B. meine obere Toleranzgrenze einzuzeichnen. Bis jetzt mache ich das über den normalen \draw Modus, was auch ausgezeichnet funktioniert. Jedoch habe ich dann das Problem, dass ich keinen schönen Legendeintrag mehr bekomme. Hier häte ich 2 Vorschläge. Zum einen die Legende "freier" zu gestalten. Also so, dass man beliebig (ggf. auch ohne Plot) ein Legendenelement hinzufüen kann und vllt. noch das zugehörige Symbol festlegen kann. (Bis jetzt habe ich das Problem, das ich mit tricksen zwar meine Obere Tolerangrenze in die Legende bekomme, dann jedoch mit einem Säulenzeichnen davor). - Der andere Vorschlag ist, dass Säulendiagramm anders zu definiern. So das ich auch noch einen Plot hinzufügen kann, der mir eine waagrechte Linie ohne zu tricksen einzeichnen lässt. - - - 3. Eine Gruppierung von stacked bars ist nach meinem Wissen nicht möglich. Es ist zwar schwer sich ein Anwendungsgebiet dafür vorzustellen, aber wenn sie danach mal suchen (speziell im Excelbereich) werden sie sehen, dass viele Leute so eine Funktion benutzen. - - -> siehe auch folgemails mit Beispielskizzen - -> beachte: Fall 2.) erfordert mehr arbeit als lediglich 'line legend', weil ybar ja den koordinatenindex verarbeitet! - -- 3D + axis line variants: someone might prefer GRID LINES as for the boxed case - combined with axis line=left... - -- the table package uses a lot of logs -- but it can't change the log basis. - -- automatically choose a predefined scaling style depending on width/height (?) - -- my elementary data structures always use \string to support macros as data structure names. I fear this might be ineffective. - Perhaps its better to check if the argument is a macro (at creation time, thus only once) and call \edef#1{\string#1} to assign some sort of name to it. - This will invoke \string only once. Is this faster? - -+ implement 'point meta=symbolic command:<cmd>' and 'point meta=command:<cmd>' - the command should assign '\pgfplotsretval' - -+ It would be a valueable addition if the external lib would be available for the next stable release. - -+ the scatter/classes feature needs a legend. - -- the following keys should process their argument with \pgfmathparse: - - [xyz]tick, - - min/max - - tickmin/max - - meta min/max - - domain/ y domain, - - error bar arguments, - - without FPU: width/height/ view - -> check optimizations of the math parser! - -> check if I can activate the FPU during the survey phase! - -- check y tick scale label for 2nd y axis - -+ provide a '3d box' boolean which draws the full box. - -> should use the correct drawing sequence (foreground/backgraound) - -> should use the decoration things - -+ there is no possibility to provide a background color for the axis only - (should be a fill/draw style for the clip area). - -+ -> perhaps 'plot box aspect ratio=<x> <y> <z>' ? - And I still have the stretch-to-fill thing as in matlab. - -+ finish the 'unbounded coords=jump' method. - Ideas: - + mesh plots should use a special method here: - + they should proceed as usual - and eliminate complete patches - with special treatment. - + the use of shader=interp should throw an exception in case of - unbounded coords. - ~ all other plots work reasonably well with it, I suppose. - + plot graphics should throw an exception as well. - + should the user filter results be filtered by 'unbounded coords' as - well?? They are not unbounded - they have been discarded... - -- idea to improve rel. accuracy: do not simply invoke 'pgfmath@basic@...' but - allow an arbitrary suffix. Maybe one could allow to use the FP package. - -+ reverse axis=true ideas for 3D: - + this flips the normal vector in some sense. Since the "foreground" - algorithm simply queries the sign of the normal vectors, I only need to - check for a "-1" in the right places. If I am not mistaken, changes in the - following components should be enough: - - decision which is foreground/background - - 'ticklabel cs' and 'rel axis cs' - -> these may require a design decision! What does the "0" coordinate - mean: the lower limit or the lower part of the figure? - -+ z buffer implementation ideas: - + reverse: is already implemented - + reverse x: - A_ij := a_{i,n-j} - for ordering=rowwise: trivial: reverse rowwise - for ordering=colwise: same technique as for transposal: collect - colvectors in fast applist; reverse this colvectors - + reverse y: the same with exchanged roles. - + auto: I need to know: - + How are the coordinates sorted? - If ascending in x and ascending in y, everything is ok. Otherwise, I - need to remember signs. - -> it should suffice to check the FIRST and LAST coordinate to get - these signs! - + If both are ascending: I can decide per axis if coordinate reversal is - necessary: - If "0vv" is background -> ok, change nothing. - If "0vv" is foreground -> reverse in x. - The same should also work for y -> allows very fast decision. - - -+ I have the following request. Is it possible to also provide a domain -key for file and table plots. I have a file containing data points -where only the points in a certain range shall be plotted. I first -thought that filters might be a solution, but it seems that they apply -to the whole axis, not only to one specific plot. - -+ I have a suggestion for the next release of the pgfplots package. -Now it seems to be so, that the major tick lines are drawn before the minor tick -lines, which can lead to unwanted results, if somebody redefines the color of -the minor grid only. So it would be better to draw then the other way round. -Does somebody else agree? -- that's not solved yet! Try it out for grid lines! - -+ the UI to provide point meta is complicated. - Why - point meta=explicit,table/meta={<colname>} - instead of - point meta=\thisrow{<colname>} ?? - [ ADDED SANITY CHECK AND ERROR MESSAGE] - - The reason is technical: My code separates the table reading and the - coordinate processing. I'd like to discard this separation.... but I hesitate - to do so because this might lead to scoping problems... - Work-around idea: check if the '\thisrow' macro occurs and set then - 'explicit,table/meta=...' accordingly. - -- log plots: minor tick num would be useful here! If tick labels are placed at - '1e-5, 1e0', minor tick num= 4 would lead to the minor tick lines at - '1e-4,1e-3,1e-2,1e-1' which is useful. - So:allow minor tick num for log axes. - -> - need to adjust the check for "uniform log ticks" - -- is there a way to get the current row/col index during \addplot? - -- plot shell: - - It would be nice if the standard shell interpreter could be replaced. - Idea: - \pgfkeys{/pgfplots/plot shell/interpreter/.code 2 args={sh #1 > #2}} - then in the code - \pgfkeysvalueof{/pgfplots/plot shell/interpreter/.@cmd}{#1.sh}{#1.out}\pgfeov - - the \pgfshell macro is quite general and could be added to pgf (as - suggested by you, Stefan). However, this would also need modifications in - tikz.code.tex to get some sort of high-level user interface. - I find plot shell very useful, and it could be added easily. My - suggestion: - Either write a high level user interface for tikz or rename the command - to \pgfplotsshell and put it into pgfplotscoordprocessing.code.tex. - In the meantime, I added it to pgfplotscoordprocessing.code.tex (bottom). - - there is a potential difficulty with the '\addplot table shell' command - (which is a good solution!): the semicolon in this routine will have a - fixed catcode. But packages like babel with french language will change it - to active, so french people can't use \addplot table shell. The solution - is technical and I am not proude of my own anyway... we'll just have to - think about one. - - documentation for the 'table shell' feature is missing yet. - - I am not sure if the replication of /tikz/prefix and /tikz/id is helpful - or confusing.... - - - -+ provide a possibility to get the maximum tick width (for use in ticklabel cs) - -- > Is it possible to shade the area between two curves, using pgfplots, such as - > in this example: http://www.mathworks.com/matlabcentral/fileexchange/13188 - > The only shading I could find is between one curve and the x axis... Shading - > between curves seems to be possible, but only with stacked curves. Is is - > possible to disable stacking somehow, but keep the \closedcycle behavior? - -+ provide a possibility to draw gaps. Maybe using nan or inf coordinates? - Currently, NaNs and infs are skipped and pgfplots simply interpolates over - the gaps. Perhaps it would be better to explicitly form a gap? I am not sure - about that, but it appears to be a good idea. Requires a lot of special - handling - -+ provide a 'y variable' key? - -+ provide other log bases - -+ implement colorbars. I have a running prototype; it just needs some tuning. - Ideas: - + place it as a separate axis besides the original one. - + make sure that named nodes like 'current axis' stay correct - as if there - was no extra axis. - + provide all required variables locally in pgfkeys - the meta limits and - style arguments etc. - + I need to communicate: - + the current color map, - + styles for ticks, tick labels and axis lines (?) - (at least the tikz ones?) - + create a style for the new axis. - -- re-implement sampling loops. I should discard the compatibility with \foreach - internally in order to gain accuracy! Maybe it is necessary to invoke - different loops - one for tikz \foreach (samples at) and one "standard" - sampling routine. - -- 3D: assume default plot type when used with \addplot3 without plot style - (perhaps a special cycle list) - - -+When working with markers on the plots, the nomenclature is inconsistent. There -is 'mark size', 'mark=*' and 'only marks', but 'no markers'. - -+I created several cycle lists to be consistent in different types of plots. For -example I have a cycle list with markers and no lines for raw data points and a -cycle list with only lines in corresponding color. Now if I want to have raw -data points and fits in one axis, I cannot use these. Ok, I could make a -cyclelist where raw data and fit styles take turns, but this would break down -when I have more than one fit for a set of raw data. This is probably something -that has to go into pgf, but would it be possible to add a easy way -+ to switch to different cycle list between two addplots, -- and to navigate in it (go to a specific position in the cycle list, go n steps back/forth)? - -+When I first tried to combine plots with only symbols and plots with only a -line in one plot, I had difficulties to figure out how to do it. Having worked -with pgf before, I intuitively tried to activate no marks/only marks for the -whole axis and then override it explicitly for some plots, by adding [only -marks/no marks] to addplot. - -+I would find it convenient, if there was a key to indicate legend placement, -for example 'legend position=south west' as shorthand for 'legend -style={at={(0.05,0.05)},anchor=south west}' or something similar. - - -- replace \pgfpointscale with a 'q' version -> it invokes the expensive math parser. - -- optimization ideas: - - pgfmultipartnode evaluates every anchor twice - - implement a cache for expensive, repeated math operations like 'view' - directions or common results of 1/||e_i|| . - - search for unnecessary math parser invocations; replace with 'q' versions - if possible. - - implement a hierarchical generalization of the 'applist' container (a tree - applist of arbitrary length) - - eliminate the deprecated 'non-legend-option' processing. - - remove the different (empty) paths of the axis node -- it appears they are - not necessary and waste only time and mem. - - try implementing an abstract 'serialize' and 'unserialize' method - it - might be faster to re-process input streams instead of generating - preprocessed coordinate lists. - - try to reduce invocations of pgfkeys - - optimize the filtered pgfkeys invocations - the filter is slower than - necessary! - - eliminate the 'veclength' invocations for single axes - they can be - replaced with "inverse unit length * (max-min)" - - the key setting things can be optimized with \pgfkeysdef - - create the /pgfplots/.unknown handler (.search also=/tikz) once and remember it. - - the (new) tick label code might be very expensive: - - check for (unnecessary) calls to \pgfpointnormalised -- the normal - vectors are already normalised! - - check the cost for bounding box size control of the tick labels -- - maybe this can be optimized away if it is not used. But this decision - is not easy. - -+ provide a simpler method to replace the '\cdot' in tick scale labels with a - different sign, for example '\times'. - -+ provide a feature for bar plots which add the bar value as node on top of the - bar. - Idea: provide some sort of "every coordinate path" - an optional feature which - has access to both, the logical coordinates and the low level path coordinates - and can do something. One application would be to place nodes "above" of the - low level coordinate and use number formatting routines to display the number. - This shouldn't be difficult (with the exception of logs ... or user - transformations... hm.). - -> think about it. - -> log can be visualized with 10^{<tick>} as before! - -> the 'inv trafo' can be applied if and only if needed. Idea: provide macros - like '\x', '\y' and '\z'. This should do it. - -- use the new \pgfplotspointoutsideofticklabelaxis things to place axis labels. - -> this needs a further variant which allows 'relative' axis coordinates - (0=lower limits, 1=upper limit and everything between) - -- I need a clean interface to distinguish between R^1 -> R^3 and R^2 -> R^3 - visualization. - Maybe a boolean 'matrixinput' or something like that? - -> the 'mesh' plot handler is also useful for line visualization! - - the '/pgfplots/mesh' key could set matrixinputtrue - - a style 1dmesh or so could set the plot handler and disable meshmode? - Of course, I could also try to evaluate the 'rows' and 'cols' values. - If cols=1, I have line visualization. - -+ allow changes to `legend image code' in plot styles. Maybe the 'legend image - code' or some other preparation commands can be remembered explicitly such - that they are set before 'legend image code' is already running? - -- legends need a better key path to process pgfplots plot handlers. -+ I need legends for mesh/surface plots. - -- the tick anchor=auto feature could work like this: - - "use paraxial whenever possible - unless the user requests "tikz" - explicitly or implicitly". - - "explicit" request: the user says "tick anchor=tikz". - - "implicit" request: the user says "anchor=..." for a tick label. - - realization: - - use \scope to set the tick label styles, overwrite - '/tikz/anchor' inside of this scope's pgfkeys statement. - -> that doesn't work. I NEED to adjust 'every node'. - - move the processing of 'tick anchor' inside of that scope - - effect: 2D axes will also be processed by means of 'paraxial' (unless the - user doesn't want it). - -> reversed axes work automatically! - -+ provide the axis bounding box as coordinate system (for description placement). - - -- provide a \pgfplotspathcube command as generalization from the cube marker. - The cube command should work similar to pathrectangle or rectanglecorners. - -- write a public math interface which provides access to axis internals like - limits, the 'dimen-to-coordinate' method and so on. - -> it might be useful to use pgfmathparse for any numerical input argument as - well. - -+ write public interface \pgfplotsdepthofxyz#1#2#3 -- consider renaming that one to pgfmath... or pgfplotsmath... ? - -+ reverse legend - -> CF: implementation of Tom Cashman per mail - -- what about in-text-input of tables like - \pgfplotstableread\data{<data>....<data>}{\macro} - \pgfplotstableread\data{<data>....<data>} to listener \listener - -- I have just added '* expr' for plot table. - ideas todo: - + implement it for plot table structure as well, - - document plot file such that users know how to add expressions, or, even - better, automatically switch to plot table if someone uses x expr.. - -- maybe some sort of 'point meta=map' would be interesting. - The idea is to provide a mapping - (x,y,z,singlemeta,additionalinfo) -> f_1,f_2,f_3,f_4,f_5,...,f_n - and each f_n has a name and a value. - The additionalinfo could be further rows in a table or the current plot - context. Then, each f_i could be a symbol, maybe a number or something like - that. There should be one designated f_i which is used as "the" cdata source - and which is mapped to [0,1000]. - -- optimize the z buffer=sort impl of mesh mode: use preallocation (doesn't yield - much, but at least a bit) - -+ it could be interesting to provide customizations to the cube marker. For - example different lengths for each side... could be used as basis for a 3D bar - plot implementation. - -- there are applications in which BOTH untransformed meta AND transformed meta - are required. In this case, the untransformed meta should be provided in a - more convenient way - perhaps as fixed point number? - -- in scatter point public interface: it would be interesting to know if we are - currently processing the first/last coordinate. is that information available? - -+ write default styles for "string coordinates" which maps a set of -user defined strings somehow into a numeric range (using a simple -dictionary) - -- It is certainly possible to write some sort of CELL-BASED 'mesh/surf' shader - - a combination of 'flat corner' and cell based rectangles: - - every coordinate denotes a CELL instead of a corner, - - the "shader" maps the cdata into the colormap to determine the cell color - - details? - - to get well-defined cells, I have to enforce either a non-parametric - lattice grid or do a LOT of additional operations (?). - - alternative: define N*M cells by N+1 * M+1 points. - - perhaps a combination of both? - -> that's more or less the same as 'flat mean' up to the further - row/column pair - - it would be generally useful to have an "interval" or "cell" mode: - the idea is that every input coordinate defines an interval (1d) or a cell - (2d). To define the last cell, one needs to add one "mesh width" somehow. - I just don't know where: - - the artificial cell should be processed with the normal streams - - including limit updates, stacking etc. - - the artificial cell needs to know when the end-of-stream occurs. - For 1d plots, that may be possible. For 2D plots, this information - requires a valid 'cols' key. - - I suppose it would be best to patch @stream@coord.. at least for the - 'cell' mode. - - Idea: - - the \pgfplots@coord@stream@coord implementation realizes the - cell-mode: after every 'cols' coordinate, a further one is - replicated. This needs the "last mesh width". - Furthermore, it needs to accumulate a row vector, the "last row". - This last row is need during stream@end to replicate the further - row: - - the \pgfplots@coord@stream@end implementation has to realize the - last step of cell mode: the replication of a further row. It also - has to realize the implementation of 'interval' mode (replication - of last coordinate). - My idea is to simply use an applist for this row accumulation. The - format should be compatible with \pgfplots@coord@stream@foreach@NORMALIZED. - That doesn't produce problems, even when the end command is invoked within - a foreach@NORMALIZED loop - because the loop has already ended. - - - - -- I have a funny idea to replace the memory intensive and slow TeX based data - structures: I could write coordinate streams into a file like LaTeX's .aux - file - and re-read it. The file performs the coordinate loop automatically in - such a case. Key question: what's more expensive: \input or the optimized - macro append? There may be an even-point at which one should switch the low - level data structure. - - One could introduce some kind of in-macro caching: write to file every 100 - elements or so. - This would be the applistX with the same L1 and L2 caches - but the main - memory would be a file instead of a macro. - - maybe it is sufficient to use concatenate up to N three-level-deep - applistX, each with a fixed size? This should work as well. The global - number of macros required for such an implementation would be 3*N. If each - macro contains several thousand points, this would be better than nothing - - and simpler than a tree. But it doesn't have good asymptotics, I agree. - - - -+ pdf supports REAL lattice shadings! See pdf reference 1.7, section 4.6.3. - It is possible to write the coordinates on a lattice and colors for each coordinate; - resulting in a correctly interpolated shading. I suppose this uses a z buffer. - The only problem: it requires binary integer input. The integers are then - mapped linearly into the real space using the /Decode array. - If I could somehow write binary data into pdf streams, this would work - properly. - + Notes to finish that thing: - - the plot expression sampling could automatically respect the 'z buffer - emul' -> and clear the variable afterwards (optimization) - + finish low level interface - + write ps driver - - - - -+ provide a public basic level API to pgfplotstable: - + access, iterate and read table elements - + manipulate elements - -+ binary input subroutines: - use a simply scaling for dimen registers. The scaling should be such it maps - [-16384,16384] -> <range for N bytes> - properly, i.e. it is just an integer division. The resulting integer can be - encoded using the available linear map functionality. - - -+ is there a (small?) possibility to write an efficient z buffer? To order the - drawing operations for mesh/surf plots? - -> Idea: for surface plots, it should be completely sufficient to start - drawing at the correct edge; in the correct direction. - Thus, the required operations to get a correct "z buffering" is either - + to reverse the sequence (i.e. to reverse rows and cols), - + to reverse the rows - simple a posteriori impl: iterate through sequence, pushfront every - row element. When row complete: pushback onto the final list. - + to reverse the cols - simpel a posteriori impl: iterate through sequence, pushback every - row element. When row complete: pushfront onto final list. - + ok, I have implemented sorting and depth information. - Ideas: - + for scatter plots: simply sort coordinates, - - for 3d bar plots (to be implemented): sort by (x,y,0) coordinates - + for (1d/2d) mesh plots: sort fragments (lines or rectangular - patches) according to the depth information of one corner, - + for any single-colored plot handler (lineto, curveto etc): to NOT - change the sequence. - -> perhaps I can return both, the sorted AND the unsorted sequence - if one has markers and single-colored plot handlers. - + don't use the enumeration pattern here; use '\let' to set the z - buffering technique (if possible). - -+ provide better styles for 3D plots: - + enlarge [xy] limits=false, - + view={45}{-30} - -+ Ideas for 3D axes: - + I could introduce '\addmesh' (or a 'mesh=true|false' option). - -> this activates R^2 -> R^3 visualisation. - -> \addplot is then always R^1 -> R^{2,3} - + only \addplot3 {<expr>} is different: it should default to (x,y,<expr>) - using a mesh. - + mesh input: - + for plot expression: sample a matrix - + for coordinates, file, table: - + describe how the linear sequence shall be mapped into a matrix - + requires the matrix' size and a flag 'ordering=rowwise|colwise' - + in principle, the matrix size is controlled by the samples key. - But since we are describing a mapping here, we should (maybe) - introduce a further key like |resulution={x}{y}| ... - + I need a |samples y| key anyway. - + visualization: - + case 'only marks': easy, just as before. - + all other cases: - + visualizations like surface and mesh are relatively simple: - we can iterate through the matrix (for example row-by-row) - and we ONLY need to access the CURRENT AND LAST ROW to - draw the required things. - -> Idea: provide an abstract datastructure which provides fast - access and efficient storage for the last visited row! - The best would be an array, but I should keep in mind that - arrays may be too inefficient with respect to TeX storage. - + I can implement 'flat shading' (piecewise constant). Idea: - + use rectangular elements - + query the colormap for one of the four corner points - + simply draw+fill the element with that color. - + framework: either the same as for scatter plots, or maybe - I can use the pgf basic- or system layer for the color - commands. This is potentially faster. - -+ Notes for how to finish the 3D axes visualisation: - + a 3D axis consist of several different parts (all of them are now more or - less ready). - They are: - + three axis vectors which determine the 2D projection. - + Input methods: - + |view| key (preferred) - X explicit |x,y,z| vectors - X |x,y,z| vectors given in the correct relative size. - -> simply scale them uniformly to get the desired width and - height - + A method to scale those axis vectors to get the desired dimensions. - + A decision for how to plot the axes: - + a complete box. - + only three surfaces visualized (the "back" of the axes) - + A decision which of the (available!) axis lines shall be used for - tick lines and tick labels. - Of course, this depends on the choice in (3.). - Input methods: - + automatic placement. This is the preferred method. - this requires - a) a decision which axis line gets the tick labels - b) a decision whether tick labels are "right of" or whatever - the chosen axis line. - X user defined placement: the user EXPLICITLY provides the desired - axis. - X The point (4b) above shall be modifyable by a user interface. - + An easily usable user interface to place axes descriptions like - labels and title. - Possible choices: - + Placement relative to axes vectors. - + Placement relative to a two-dimensional coordinate system, - relative to the VIEWPORT ("left of figure", "right of figure", - "above figure") - + Placement "parallel" to the axes which got tick labels - + "really" parallel? -> badly rotated text - + just "near" the respective axis line? - - - Some more implementation notes: - + If one of the 2D x,y,z vectors has length 0, the respective axes - should be hidden. - + a normal 2D axes should be considered to be an efficient special case - of a three dimensional axes - hide the special treatment as far as - possible. - + the routine which computes default tick positions needs - veclength*(max-min). Verify that. - + provide new keys: - + [xyz]ticklabel anchor=auto,paraxial,tikz - + [xyz]ticklabel dist=<dimen> - + with 'auto': - + non orthogonal axis => same as paraxial - + 3D => same as paraxial - + all other cases => same as tikz - + with 'paraxial': - + my new stuff (with the '*dist' keys as parameters) - + with 'tikz': - + as before: 'at='<tick position> and the anchor determines the - alignment. - + I still need anchors for 'paraxial' - + for axes labels: - Idea: use Tikz's '\node[pos=0.5]' feature - + prepare two coordinates and a path (user configurable) which - connects them - + place the label on the path, for example using pos=0.5 - + the path could be (depending on the tick label position which is - either LEFT or RIGHT) -- |- -| or something like that. - + Ideas how to get those axes / surfaces which are on the back/front of - the 2d projection: - + I need the 3d (!) view direction. For 'view=', the 3d view - direction is directly available, for explicitly provided axis - vectors, it should be possible to compute it using cross products - and embedding in 3d (at least I hope so) - + now, given the 3d view direction and the three 3d axis vectors, I can - compute scalar products to check whether the view axis and the - axis vector point into the same direction. If I am not mistaken, - the following case distinctions hold: - v * e_x > 0 => the surface attached at the lower end of e_x is - FRONT, the surface attached at the upper end of e_x is BACK. - This should hold for e_y and e_z as well. Furthermore, the 3d axis - vectors are just unit vectors (if I suppose that only the view is - rotated) - + given the flags "FOREGROUND=[0|1]" for each axis line / axis - surface, I can also deduce - + which lines shall be drawn (or, in case of a complete box, - *when* they shall be drawn - as foreground or as background), - + which lines shall contain tick labels - + which lines shall contain axis labels - -+ 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 (reversed) 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. - -- 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'. - - -+ 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. - -+ 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. - - - -- 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. - -+ 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 - - 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=] {<graphics>}; - -> load external plot image!? Only useful for matlab, if matlab would allow 100% - control over bounding box. Unfortunately, it doesn't. - -- allow extended <col name> 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. - -+ 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 - |