summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/pgfplots/todo.txt
blob: a38eda7be856fc5a8d9d845576d9b5786a687eef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
-------------------------------------------------------------
Testing
-------------------------------------------------------------

last test verifications:
						pgf	CVS		pgf	2.00
pgfplotstests			2009-02-16	2009-02-16					
manual					2009-02-16	2009-02-16			
example	latex			for 1.2		2009-02-16					
example	context			for 1.2		2009-02-16				
example	plain tex		for 1.2		2009-02-16				

-------------------------------------------------------------
BUGS / FIXES
-------------------------------------------------------------

- the plot mark code invokes a lot of math parsing routines - which is a waste
  of time in my opinion. All expressions etc. have already been parsed.
  Potential for optimization!

- verify that 'draw=none' works! Is something broken here?
	-> write tests!
	+ it appears to be desired that (at least some) markers invoke
	  \pgfusepathqfillstroke
	  -> they always 'draw', regardless of tikz color settings.
	  -> ok, I patched that in my marker code... (hackery :-( )
	- no, it works only partially:
	  	draw=none or fill=none works as expected.
		But 'blue' disables filling!?
	  

+ provide example for colormap changes - that should also verify the correctness
  of the method

+ provide sanity checking in scatter plots - for example missing explicit
  scatter src.

+ improve docs for scatter plots: 
  	+ 'only marks' is also a scatter plot!

- check behavior options provided to table[] and file[] and so - is that
  correct?

+ something with the table package appears to be buggy!?

+ the plot table[] search path is not good - it should include /pgfplots

- introduce backwards compatibility with old pgfmathfloat.code.tex file
	[ not interesting for pgfplots 1.2, only for pgfplots 1.1 !]

+ there is a bug related with empty axes - I suppose in conjunction with the
  tickmin/max feature (it won't be reset properly)

- the arguments to plot file[#1] and plot table[#1] are not consistent with
  rest. They need to be treated as behavior options (maybe in a different key
  path).


- there is a space too much in some behavior messages (occured in test
  processing)

X introduce backwards compatibility with old pgfmathfloat.code.tex file

- the pgf math parser has wrong precedence for '-' prefix op:
  	exp(-x^2) is wrong.

- the auto-generated tick labels for non-unit-distance log axes could be better.

+ verify that the domain key always accepts the extended data range

+ I observed problems with opacity set for just one plot which was used for
  every plot in the axes!? 


+ the stacked plots impl is not yet in logical coords - that means it 
  won't work with non-standard unit vectors!

- fix version stuff in package header
- introduce CVS Header Variables in every sourcefile

+ The floating point math routines should be put into a separate library.
  Provide compatibility support for that in pgfplots!

+ empty plots cause bugs.
+ empty plots and the named nodes may not work correctly -> check that

+ newlines in plot coordinates cause an error.
  + provide sanity checking and correct error messages!

+ 'domain' can't be used to increase the data range, even when combined with fp.
+ huge 'domain' arguments for 'plot function' lead to an 'dimension too large' error 
  although everything works fine
 
+ the float math methods should be affected by the fixedpoint library, but they
  are (because the underlying pgf math routines are exchanged).

X scaled ticks is not properly implemented for log axes
	+ it is not available for log axes, so that's ok

+ pgfplotstable and \rowcolor and 'sci sep align' in conjunction produces
  overwritten digits! The color seems to be on top of the numbers left of the
  sci separator.
  -> This is caused by the left/right overhang of the colortbl package and my
  implementation of 'sci sep align' as an extra column. That's bad.
  -> Idea:
  - manually overwrite \rowcolor/\columncolor/\cellcolor in a portable way such
	that overhangs are made properly.
	Maybe there is a macro in colortbl?
	[fixed for \rowcolor]


+ stacked plots + error bars don't work correctly together: I need to shift the
  error bars

+ error bars should be drawn on top of the plot to avoid conflicts with filling.

+ [xy]ticklabel pos  values 'top' and 'bottom' are somewhat inconsistent with
  the actual placement

+ the auto-disable-feature for logarithmic minor ticks can be overruled (of
  minor grid lines) which should not be possible
  -> provide a good policy how to deal with user inputs:
  		1. draw minor tick/grids if requested
		2. provide error message

+ scatter is disabled if no default mark has been set.

+ filter warnings are broken because they don't output the input coordinates

+ tick align=center is broken since last revision. Possibly tick align=outside
  as well.

+ clickable lib is broken somehow

+ check for clickable lib if multiple axes are in the same tikzpicture
	-> doesn't work. Why!?
	- I can't reproduce that bug. Maybe it is fixed in the meantime?

+ the case
		ymin=629.65,
		ymax=629.70,
  FAILS with math errors because the affine data transformation is deactivated
  for the automatic tick computation! Providing tick labels manually works.
  -> FIX THAT! Ticks should be computed without this restriction (if necessary,
  in float arithmetics)!
  	
+ it is not possible to provide '[xy]mode' in styles.
	-> ok, provided error message.

+ check whether there are any plots before processing something like
  'xtick=data' or so

+ the clipping of tick/grid lines is currently disabled due to the change to 
  logical coordinates and needs attention.

- In 3D case axis [xyz] line != box, there is just ONE hyperplane.
  My implementation works only if either ALL are box or ALL are 'middle'.

- 3D case : which hyperplane gets tick LABELS?
  The current implementation based on  '[xzy]ticklabel pos' is not sufficient

- 3D case: something fails with disabledatascaling

- 3D case : grid lines work correctly, but they are not satisfactory.
  I'd like grid lines in the background only.

- 3D case : tick/grid lines are on top of the axis lines. This leads to 
  poor quality.

+ '\coordinate (<aname>) at (axis cs:0,0);'  does NOT work;
  '\node[name=<aname>] at ... ' DOES work.
  -> I can't hook into the 'at' syntax; I can only override the 'name'
  key. 

+ check whether the \label/\ref construction requires \protect\tikz and
  \protect\path etc. if it is placed inside of \caption...
  -> no; it has catcode 12

+ check whether named nodes are still ok. Since the 'fill opacity' bugfix, these
  may be broken...
	maybe the scoping needs to be improved
	-> there is still need for scopes in case 'clip markers'!

+ error messages if the PGF version is wrong should be added
  -> check for \pgfkeys
  	-> I should also check whether the float routines are available!
	Maybe they will migrate to a tikz library someday.


+ \addplot [fill opacity=...]  is not scoped properly!
+  I suppose the same problem holds true for dotted line styles.
+ setting mark options to dashed also changes the legend's appearance


+ the clickable library does *not* work inside of figure environments



+ renormalization bug in 
	log(9.999998e-01) = 4.70201 != 0 

X Bug in table input: if colnames contain (some?) UTF8 characters, \csname <colname>\endcsname FAILS.
  That means table column names can't use UTF8 characters.
  Possible solution: for each character in <colname>, check whether it is active. If yes, change its meaning.
  I am not sure if that's acceptable...

X error recovery: it is sometimes almost impossible to find errors in
  key-value-settings because \end{axis} or \pgfplotstabletypesetfile does not
  is NOT the correct context.
	-> possibly with \errorcontextlines=10?

+ the error message for gnuplot invocation is wrong; gnuplot should be called on
  the '.gnuplot' file instead of the '.table' file

+ there are still plain TeX loops in the legend code!?

+ javascript stuff is incompatible with a lot of active characters, 
  for example the german package:
	+ bug in insdljs: workaround introduced.
	+ bug in my code fixed

- javascript stuff does not work if the complete figure is rotated (sidewaysfigure).

- javascript: incompatiblity with external library:
  	1. filenames: \jobname contains characters with incompatible catcodes and
		that funny insdljs package tries to assemble macros with these
		characters.
		-> fixed; I simply use pgfplotsJS as temporary file name.
	2. the images as such have corrupted forms
	  -> Can be fixed if 
		\usepackage{eforms} 
		is used BEFORE loading pgf. The reason: \begin{Form} and the shipout-hackery
		of the pgf externalization bite each other. 
		\begin{Form} must come before the shipout hackery of pgf.
	3. \includegraphics does not preserve PDF forms.

- the interrupt bounding box feature should still update the data bounding box.
  Otherwise, transformations may fail.

+ to check: it *could* be possible that errorbars + stacked plots are
  incompatible.

+ the 'alias' and 'create on use' features may lead to errors. Check it!

+ variables which are used both globally and locally seem to fill TeX's save
  stack to due retained restores

+ I have introduced incompatiblities with the 'log identify minor ticks' option.
  Check how to solve that. Side conditions:
  	- compatibility with the modified log tick labels for small range
	- compatibility with extra ticks
	- compatibility with the manual

+ check whether 'clip limits' works properly if only one data point falls into
  the final region

+ add '-halt-on-error' to externalize command

+ handle rare case that auto limit computation leads to min > max (only possible
  for clip limits=false)

+ evaluate 'every axis plot' inside of \addplot command, even if that means a
  small inefficiency because it is evaluated in the \draw command as well.
  -> allows to get id, prefix, samples and other behaviorual options.
  -> attention: then, every axis plot would contain BOTH display and behavioral
  options; take care with key paths

+ \addplot plot[#1] does not use /pgfplots as search path
+ 'every axis plot' does not use /pgfplots as search path


+ implement partial limit specification, for example 'xmin=5' -> only compute
  'xmax'

+ check gnuplot on windows - there appear to be semicolon problems!?

+ again, the disabledatascaletrafo key does not seem to work correctly. Check it!

X active semicolons may be a problem

+ [ CF: for tikzlibraryexternal : use double quotes instead of single quotes in
  system calls -> win32 doesn't support single quotes ]

+ problem with context: even simple images do not work correctly. Why does the example work!?

+ table package: 'array' required for some examples -> document

+ handle 'nan' and +-inf in plots

+ 'every axis plot post' is not reflected in legend (at least not properly)

+ plot function: incompatibility with 'german' package and "  catcodes

+ improve error recovery

+ grid lines and tick lines can obscure the axis lines, especially when used
  with different colors.
  -> draw axis lines on top of tick/grid lines!?
  Or more generally: change drawing sequence to
  	1. grid lines
	2. tick lines
	3. axis lines
	4. tick labels?

- extra ticks can be disabled by the tick special cases for axis lines (when two
  axis lines cross each other)

+ eliminate any public reference to the '\\'-lists. They are inconsistent with PGF.

+ use '{}' for sci  'e' style - looks better

+ the tick scale labels are inadequate.
   1. Formatting
   2. maybe they should be disabled at all!?

+ specifying axis limits for X should also limit those for Y (some sort of
  clipping)

X the text height of every axis x tick should be adjusted to allow tick scale
  labels on the same vertical alignment
  -> bug in pgf: text height does not properly respect to the current font!?

+ the new \pgfkeys framework:
  	+ I have re-implemented all options with \pgfkeys. 
	  this allows styles and mixing of TikZ/pgfplots options.
	+ BUG: if someone provides FULL keynames, the method WILL FAIL.
	+ the style= option fails.
	+ the 'x=' and 'y=' options fail.
	+ every option which exists in both, pgf and tikz, will fail!
	+ 'legend style' fails
	+ the 'legend style, grid style, x label style etc. options' test fails

+ axis limits of zero width are not fixed causing division by zero

+ ytick=\empty is broken again :-(

+ if a logplot has very small axis ranges, only ONE tick label will be placed.
  Thats not enough.
  In such a case, tick labels should be placed at MINOR TICKS [2-9]*10^i.
  BTW:
    if someone places tick marks at [1-9]*10^i, the minor ticks should NOT be
	disabled. 
	Instead, tick positions should be RECOGNISED AS MINOR TICKS (which is not
	that simple).

+ die legend[font=] variable ist doch dasselbe wie in dem tikzstyle zu legenden,
  oder? warum funktioniert es dann anders?

+ implementiere enlargelimits fuer log-achsen

+ markers werden rausgeclipped, wenn die achsen TIGHT sind.

+ man kann keine leeren listen an tick labels uebergeben!

+ width/height produziert NICHT die gewuenschte breite.
  Man sollte ne zusatzoption haben, die die labels grundsaetzlich NICHT
  beruecksichtigt.

X Fix the scaling estimations.
  Problem: I don't know sizes of labels, legends, titles and tick labels.
  Idea: 
  	-Create a temporary picture
		\hbox{%
			\begin{tikzpicture}[xshift=...,yshift=...] % skaliere auf (0,0)--(1,1)
			\draw (0,0) rectangle (1,1)
			plaziere labels + legende + vllt. ein tick auf jede achse (?)
			\end{tikzpicture}
		}%
	- measure and remember its size
	- throw it away
	-> 9.2.2008:
	 ATTEMPT FAILED.
	 Reasons:
	 	1. it is not possible to place a tikzpicture into a tikzpicture.
		   And it can't be because Tikz updates bounding box parameters GLOBALLY.
		2. I could use a combination of 
			- scope,
			- the 'current bounding box' node,
			- \pgfpointanchor{current bounding box}{ anchor name },
			- drawing commands for labels,legend etc.
		   Effect: bounding box is determined correctly. BUT:
		   	- bounding box of real picture may be affected,
			- every output is drawn because nodes can't be 'thrown away'.
			  At least I do not know how.


+ enlargelimits muss RELATIV nicht ABSOLUT gemacht werden.

+ es gibt einen fehler in der achsen skalierung, wenn 
  man sehr grosse limits hat (normale achsen)

+ default ticks muessen besser an achsenlimits angepasst werden
   -> bei sehr grossen oder sehr kleinen limits schlaegt die derzeitige
   einschraenkung der step sizes fehl

+ addplot plot coordinates { (235 , 43252) }
  								 ^
  funzt nicht wegen dem leerzeichen vor dem komma

X verschiebung des ylabels ist komisch, wegen der rotate option


-------------------------------------------------------------
FEATURES
-------------------------------------------------------------

+ the FPU uninstall command can be assembled ONCE (globally). No need to do that
  multiple times.

- What about something like '/pgfplots/table/x expr={<math expression>}' ?
  -> I could still use the lazy eval framework of pgfplotstable, i.e.
  	\thisrow{} commands, \pgfplotstablerow, \pgfplotstablecol etc.
	The \prevrow and \nextrow features won't be possible (?)

- improve support for multiple ordinates
- improve support for negative axes

+ improve plot expression
  	+ accuracy
	+ UI

- it would be useful if the clipping could be disabled for certain parts of the
  axis. Is that possible?
  	-> yes. 
	Idea: start clipping for every axis element separately! Shouldn't be
	much more expensive than a single marker path.
	- should work in the same way as before, there is no difference!
	- scopes should introduce no further problems
	- I could eliminate the nasty marker list

+ what about an optimized version of plot expression which does not need the
  brace hack (\x,{sin(\x r)}) ?

- allow math expressions for axis limits etc. Idea: try float parsing routine;
  if it fails: use math parser first.

+ plot expression for log plots would be more valueable, if it could sample
  points exponentially, i.e. linear between log(xmin) ... log(xmax):
  	x_i = exp( log(xmin) + i * ( log(xmax)-log(xmin) )/(N-1) )

- what about a feature like 'draw[xmin=...,xmax=...] fitline between points (a)
  (b)'?

- define a 'cycle list' style which simply inserts different colors into the
  predefined style (thus, markers are fixed, colors vary). One could also think
  about a complementary style.
  -> even better: I could prodive up to three different lists which can be
  combined.
  Example: colorlist, markerlist, linespeclist
  -> iterate through all possible combinations!

- cycle list should be implemented using an array structure. That's faster.


+ create public key alias for '/pgfplots/domain' -> '/tikz/domain'

X the coordinate preparation routines should assign global registers. This would
  deal properly with grouped '\addplot' commands and it allows several
  optimizations in the coordinate processing (elimination of list allocations).

- document 'bar interval shift' and 'bar interval width'

+ document line styles with arrows

- think about quiver plots

- interpolate missing coordinates for stacked plots.

- think about a low-level contour plot interface in which PREPARED contours are
  provided as input. The contours as such could be computed with an external
  program (so far).

- the error bar implementation is relatively inefficient. Think about something like
  '/pgfplots/error bars/prepare drawing'
  which sets common style keys for every error bar

- think about using a combination of the visualization engine of pgf CVS and my
  prepared-list-structure. Maybe I can adjust the list format for the current
  plot type? I need
  	- scatter/line plots 2D
	- meta coords
	- quiver may need extra vectors
	- matrix plots may need twodimensional structure
	- error bars could be handled more consistently
	- ...
  -> implement a visualization class which provides methods
  	- prepare()
	- visualize()
	- serialize()
	- visualizestream()
	and provide protected pgfplots methods
	- axis->preprocesscoordinate (filters, logs)
	- visualizer->prepare()
	- axis->processcoordinate()
	- visualizer->serialize()
	- axis->postprocesscoordinate()
	The markers as they are implememted now don't really fit into this framework. 
	The clipping region is not really what I want here...
	Idea: enable/disable clipping separately for each drawing command!
  	

- provide 'only each nth coordinate' or so as style on top of 'x filter'.

- 3D axes: my axis is "heavy weighted". 
  Possible improvements:
  	- draw exactly 3 axis lines (unless one really wants the complete box).
	- draw only one tick line per tick, in a direction which "looks well"
	  (one of the two possible directions).
	  this would also avoid double placing of tick labels in corners.
	- attach tick labels generally at the end of tick lines. Provide a 
	  distance option configuring the distance.
	  -> my idea:
	  	- for "normal" orthogonal axes (i.e. view={0,0}), the tick labels
		  are positioned directly at tick positions using proper anchors.
		- for "non-standard" axes (skewed, rotated, 3D), tick labels are placed
		  at anchor 'center'; but the 'at' position it computed by pgfplots:
		  it is positioned parallel to the surfaces' 'b' axes at a predefined
		  distance.
		- user interface: [xy]ticklabel pos in
		  {left,right,top,bottom,auto,paraxial:<distance>}
		  -> 'auto' implements the behavior above; all other choices are user
		  defined.
	- automatically decide WHICH axis lines shall be drawn.
	- see http://mathworld.wolfram.com/EulerAngles.html

+ implement simply style 'scatter classes'.
	+ sanity checking feature: try if 'pgfmathfloattofixed' results in a known
	  class!  -> but catch exceptions if the value is no number!

+ allow symbolic meta data

+ provide input options for 'meta' data
  	+ plot file
	+ plot table
	+ plot coordinates
	- document that stuff

- I could extend the clickable library such that a click into a TABLE
  opens a marker into one (or more) designated plots.

+ Optimization: normalize *internal* preprocessed stored point coordinate lists,
  for example as 'x1,y1,z1,x2,y2,z2,x3,y2,z3,' -> I have 100% control!
  Maybe it is even faster to re-use these lists for markers than to create a new
  one.

- I could compute maximum PGF logical coordinates which are then inserted just
  before qpointxy

+ optimize the new code by re-defining \pgfqpointxy for the case of scaled
  standard unit vectors.

X perhaps I can use pdf line annotations to improve clickable lib?
	-> no: there are right restrictions when using latex.

- there is a possibility to get that \label/\ref construction to work in
  conjunction with image externalization: I only need to write those commands
  into a separate AUX file and make sure they will remain ... even if the
  generating source has been externalized.
  The same could be done for javascript features; but that also requires bounding
  box control.


- asymmetric error bars

- Store the axis limits into the axis' node as saved macros. This would allow
  	- 'use [xy] limits of=<axis name>'
	- access to axis limits from other macros.
	-> provide a command
		\pgfplotslimits{current axis}{x}{min}
	  which expands to the 'xmin' limit.
	  PROBLEM: to WHICH limit: the untransformed one? The transformed one? The
	  logarithmized one?
	  -> I can't compute exp(xmin) in log plots!
	  - Ideas:
	  		- provide both, if possible. It is NOT possible for log axes.
			- use log-limits ( possibly combined with 'logxmin=' option ?)
			- The operation requires several operations because floats need to
			  be converted. Idea: do that only for NAMED AXES.
			  -> all user-interface macros must be expandable!
			- I don't want to spent time for number format conversions
			  unnecessarily here!
			- provide \pgfplotslimits and \pgfplotstransformedlimits
			  combined with simpler key-value interfaces
			- I could also provide access to the unit lengths (they are
			  available as macro anyway)
			- ALTERNATIVE: implement access to axis limits as a math function
			  which simply defines \pgfmathresult.
			-> that is probably the most efficient way to do it. I only need to 
			  register the new function(s) to PGF MATH.
			  	-> PGF 2.00: use \csname pgfmath@parsefunction@\pgfmath@parsedfunctionname\endcsname
				-> PGF > 2.00: use \pgfmathdeclarefunction
				Is it possible to provide 'string' arguments which are not
				parsed? No.
- I could provide public macros for the data transformations (and inverse
  transformations). This would also allow relatively simple access to axis
  limits.

	

+ I could optimize the number parser with '\csname ...#1\endcsname'
  constructions where '#1' is the currently identified character.
  If #1 in {0-9,e,E,+-} etc., I could save a lot of macro assignments and
  \ifx character comparisons.

+ Speaking about optimiziation: I always wanted to test \pgfmathln inside of the
  log code (combined with float support).

+ the 1000sep character should be placed for numbers >= 10000, not before. 

- provide predefined style for raised dots as 1000 seps.
  
+ improve scaled ticks: allow manual control over the automatic tick scaling.
	Idea: accept '[xy]scaled ticks=[false,true,auto,10^<k>,<real>]'
		+ true = auto: as it is now.
		+ false: as it is now.
		+ 10^k : accept an integer shift base 10. Should pose no impl. problem
		+ <real>: use float math and quotients

+ it would be interesting to get an high-level coordinate mapping
  	X : K -> \R
  X(k) \in \R is the x-coordinate.
  Idea: K can be any type of input, for example
  	- 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.

+ TDS directory structure is not completely correct. Should be everything under
  directory 'pgfplots':
	$package = "pgfplots";
	&SYSTEM ("$MV README ext_scripts test doc/generic/$package/");
	&SYSTEM ("$MV generic tex/generic/$package/");
	&SYSTEM ("$MV context latex plain tex/");
  and context files should be in
  	tex/context/third/pgfplots/...
	doc/context/third/pgfplots/...
  (reference: mail conversation with Karl Berry)


+ automatic disabling of enlargelimits when axis lines are not drawn as a box

+ copy my personal' homepages short images to pgfplots website

+ interrupt single plots at discontinuities (for example tan(x))
  -> don't draw from +infty to -infty

- optimize plot expression

+ optimize tick generation code for speed

+ alias 'axis x line=middle' and 'axis x line=center'

+ an option which contains legend ENTRIES?

+ the non-boxed axis lines are placed at 'ZERO'. Maybe this zero level should
  get an anchor!? -> allows to place axis labels above it

+ default style for grid lines to: {thin, black!25} ?


X implement an axis as path-command

+ implement proper anchors 

+ provide simple options for useful bounding box truncations


+ Maybe I could perform a restore of the current bounding box at the END of an
  axis. Restore means: restore to the setting BEFORE the axis.

+ I could create a node which can be referenced and which has the axis' size 
  [ That touches another open problem, see below]

+ I could use the new 'local bounding box' option of PGF to restrict the
  bounding box to the axis' size

+ I also need some sort of number style for log-tick-labels.

+ move math mode shifts into \prettyprintnumber implementation.

+ allow the '-plot' commands.
  It would be a cool feature if '(FIRST_X,0)' could be inserted as move-to
  operation before every plot.
  -> one could make funny features with 'fill' in plot styles.

- make the legend code more general: allow
   \addformattedlegendentry{ \node{hallo} \nextcell \node{foo} \nextcell #1}
   where #1 is the auto-generated small plot-spec image. One could also provide
   '#2' as just the current plot spec OPTIONS.



+ document 'legend plot pos' option

+ there are some clipping paths in the tick-placement loop which can be
  replacement with simple \ifdim's. 
  I guess clipping is not the cheapest operation.


- remember unfiltered (non-logarithmized) input ticks with \listnew and provide
  them like '\tick' during ticklabel typesetting
 

+ improve tick placement (more) systematically

+ provide auto tick labels at 5*i if appropriate

+ implement the legend as tikz-matrix
  -> width computation works correctly (there is a bug with font scaling)

+ provide tick labels as a list like
  	axis[tick labels={A,B,1,4,5,$\frac 12$}]
	-> convert to \listnew, use listpopfront to access elements


+ provide options for log plot tick formatting:
  	10^0.703 vs fixed point format

+ I could provide a global coordinate transformation 

+ I could try to use the plot-stream framework of PGF directly instead of using
  the 'plot coordinates' command of tikz. 
  Advantage: would be faster. And the additional features can't be used anyway
  because of my own number parsing routines...

+ rename manual.pdf to pgfplots.pdf -> allows texdoc pgfplots


+ alignment: vertikal kann ich jetzt mit baseline. Kann ich horizontales
  alignment an (0,0) hinbekommen?

+ axis hide option ? macht das sinn?

+ legende anders formatierbar?
  	- ausserhalb des (und isoliert von dem) plots?
	+ horizontal?

+ grid lines
  	+ minor
	+ major
  -> einfach als verlaengerung der kleinen tick lines
 
- es gibt scheinbar in PDF viewern die moeglichkeit, fuer den Druck ein anderes
  dokument/dokumentteile zu verwenden als fuers Bildschirmbetrachten
  (draft-package bspw?).
  Kann man das nutzen, um sowohl farbige als auch S/W-plots zu generieren?
  -> pruefe draftcopy paket


+ koennte man den kram auch aus (grossen) tabellen rauslesen? Also sowas wie
  "plot X versus Y aus file Z"?
-> DEBUG!
  Ideen:
  	+ abstrakte datenstruktur als liste von spalten, eine spalte ist ne liste
	  von nummern
	+ einlesen: 
	  	+ zeilenweise, haengt an die jeweiligen spalten mit \listpushback
		  coordinaten dran
		+ read first line as header (optionally my $flags line for column
		  formatting advice)
		+ read just strings, no parsing
		- optimal: '\t' as separator. How can I teach TeX to use '\t' as
		  separator!?
	+ would allow
	+  	\addplot plot table[x=X,y=Z] {\table}
	  and
	+  	\typesettable[columns=...,format=sci,...,formatting options=...] {\table}
	+ implementation: simple run through column lists
	-> CONSISTENT data representation, powerful display options



+ man sollte \addplot mit '+[OPTIONEN]' starten koennen.

+ ich sollte das enlargelimits deaktivierbar machen! vllt. auch ne option 'tight'

+ automatisches tick-platzieren koennte verbessert werden
  	-> insbesondere fuer normale plots

+ fehlerbars waeren nett


+ baseline option, die die linke unter ecke als '(0,0)' koordinate annimmt.
  Wuerde generell sinn machen, oder?

+ ich haette sehr gerne ein Skript, dass zu jeder figure ein eps und/oder pdf
  macht, dass dann bitte schoen ordentlich includiert wird.
  -> see tikzexternal june 2008


+ passe bounding box und x/y-skalierung "sinnvoll" an.
  +	mache ne option "width=" die die GESAMTbreite angibt.
  + mache "height" option
  + belege width und height defaultmaessig sinnvoll
  + ueberlege ein sinnvolles gesamt-skalierungs-konzept.
	Das, was ich jetzt gebaut habe, mit 'x=SCALE' und/oder 'y=SCALE'
	ist nicht ausgereift und eher verwirrend. sowas macht man wohl besser mit
	pgf-skalierungen!
	+ 	Die 'x=' und 'y=' optionen sollten direkt in setxvec reingeschrieben werden,
		ohne schwachfug mit skalierung!
	+ 	wenn ich 'width=BLA' angebe, wird automatisch 'y=1cm' angenommen. Das
		ist unintuitiv; man erwartet eher, dass defaultheight im aspect ratio
		mitskaliert wird.
	+	Nur mit der 'x=' bzw. 'y=' option sollte es NACH AUSSEN moeglich sein,
		direkt einfluss auf die koordinaten zu nehmen.

+ entscheide automatisch, ob der abstand zwischen ticks an die skalierung
  angepasst werden sollte.

+ [xy]min = auto
  -> berechne die werte numerisch
  Ideen:
  + verzoegere das malen der Achse bis \end{axis}
  + in jedem \addplot:
    ich koennte irgendwie pruefen, ob ich 'plot coordinates' habe.
	Sobald ich diesen modus erkannt hab, kann ich koordinate fuer koordinate
	parsen und jeweils min/max bilden.
  + ich muesste dann noch den befehl in einem makro konserieren, sodass er
	 spaeter, nach dem verzoegerten achsen malen kommt.

  OFFEN: was passiert, wenn NICHT plot coordinates benutzt wird? Vllt. die
  'domain' variable abfragen?
  -> jedenfalls koennte ich mir da durchaus was ueberlegen!

+ [xy]tick = auto
  in abhaengigkeit von [xy]mode: zeige ticks von floor(xmin)...ceil(xmax)

+ mache styles:
  + every plot
  + every axis (?)

+ gebe eine liste von verfuegbaren linestyles an, durch die mit jedem
  plot-befehl durchgecykled werden kann

+ option, minor ticks ein/auszuschalten

+ option, die X/Y-Achsen anders zu formatieren. Moeglichkeiten:
  + Kasten drumrum
  + je eine Linie mit Pfeil am Ende
  + Achse nach rechts oder so

+ aendere die das \addplot makro derart, dass beliebige plot-moeglichkeiten
  folgen koennen
  \addplot[OPTIONS] plot coordinates {...};
  -> das \addplot ersetzt gewissermaßen das \draw