See Also edit
- Plots and charts
- Use an xy-plot to edit data series
- AM 2001-11-23 I have been experimenting with adding interactive features to Plotchart, but you can use the current version in an interactive environment already:
- Experimenting with canvas and scrollbar
- AM 2008-08-20: When you have many items for a time chart or a Gantt chart, being able to scroll up and down is useful. But the title must remain visible, as well as the time axis ... So here is a small experiment:
- Extensions to Plotchart 2
- Extensions to Plotchart
- An interactive tutorial for Plotchart
- the canvas as a data store
- arjen 2010-08-13T03:24:42: Inspired by an article (http://www.ibm.com/developerworks/library/x-svgclientside/) by Cameron Laird on web-interfaces using SVG features, I came up with this
- contour plot
Documentation edit
- official reference
- An interactive tutorial for Plotchart
- The humble beginnings of a tutorial
Examples edit
- Plotchart gallery
- Drawing a wind rose
- an example by AM
Misc edit
Bryan Oakley 2005-05-09: I notice that the code uses [$w cget -width] everywhere it needs a value to compute the width of the graph. My first thought was that this seemed wrong -- it ought to use [winfo width $w] so that it will be drawn to fit the window in case the window grows because of the way it is packed/gridded. Of course, this also means the graph will shrink if the viewable portion of the canvas is less than the configured width/height of the canvas.I can see a case for each behavior, so I'm wondering if it would be useful to have a configuration option such that one could do [$plot configure -width "actual"] or [... -width "request"]. Of course, I can simulate that by adding code to do something like [.canvas configure -width [winfo width .canvas] after I pack/grid it, but I'm not fond of that solution.JE: What are the cases for the current behavior? It seems to me that the actual width is always the right thing to use, I can't think of when you'd want it to use the requested width (if the two differ).A third option might be to specify an actual value, e.g. $plot configure -width 200 for the case where you have a really large plot that you want to scroll around in a small canvas.I'd be willing to contribute the code for this option if you think it would be useful.AM 2005-05-10: I have not given much thought to this issue, I must admit. Resizing the plot's canvas may have to result in one of several things:- The plot is redrawn to fit the new size (using the new width and height)
- The plot is redrawn to fit the new size but the ratio width/height remains the same
- The plot remains as it is (for instance to enable scrolling ...)
- I will have to look into that one. Note that you can use \n to break the title in separate lines
- Yes: $plot xformat "%e12.4 " for instance (IIRC, I should check the code and the docs, but the functionality should be there!)
- When I used its predecessor, emu_graph, I needed to plot multiple charts too. This turned out to be somewhat tricky, as things in one chart, started to interfer with the other. When I wrote Plotchart using my knowledge of and experience with emu_graph, I decided to use one canvas per chart for that reason and because I could implement a kind of clipping more easily that way (I use filled rectangles for that). That means the basic design does not allow for more than one chart per canvas. However, when you use a cloning technique (and have no fear for data outside the shown region), it may very well be possible to copy the contents of several canvases into a single canvas for printing.
JHJL 2007-12-02: Got the latest sources from CVS but ran into a couple of problems:
- The pkgIndex is out of synch (states 1.3.1, should be 1.4.0)
- There are some debug lines in the plotaxis.tcl (two puts and a console show)
$p xticklines $p yticklinesdraw vertical and horizontal lines, corresponding to the labels along the x and y axes, respectively.If you are missing something from the user documentation, please let me know.JHJL: Thanks Arjen, Plotchart is a very nice library to have to hand. I plot a lot of X,Y positional data (e.g. aircraft, ships etc) and therefore need to keep the grid square. I had hoped the isometric plot would help here... I will look into your suggestions for drawing the grid lines (would be nice as an axis option though :)AM: Ah, now I understand - well, I might be able to help out with that :). I need to do some work on Plotchart anyway and this should be easy enough (just need a clear idea on what needs to be done).
VL 2010-01-21T05:07:41:Can i bind events to dots for example on a XYplot, i used to tag each of my points and then bind events to that tag. For that i need an ID on the canvas.?
arjen 2010-01-21T07:46:43:the latest version does have some experimental facilities for that. Perhaps not complete, but let me know what you are missing and I will see if/how I can add it.
VL 2010-05-17T12:11:01In order to bind events to components on the canvas created through plotchart, I finally had to modify the package a bit. The result of this modification is that the procedure that creates dots now returns their ID on the canvas. This way i can easily bind different events on each dot of my graphic.I did have to roughly understand how the library worked, and stumbled upon a list of IDs for each item on the canvas created by the package. Unfortunately, i did not manage to fully understand how this list worked and therefore how i could use it.I can understand the list of IDs is important in case the user wants to plot a line with symbols, or for many other reasons (i only use XYPlots with several series).Really waiting for some documentation/explanations on how the IDs are saved in this list. An example would really be neat! :)
arjen 2010-06-09T08:04:03In version 1.8.3 I have added some lacking information on the subcommands bindplot and bindlast. They can be used for defining interactive features. The relevant demonstration script is plotdemos12.tcl. See the CVS-repository at http://tcllib.sf.net/ .
[RaviChandran] 2010-06-21T23:59:44I have started using plotchart recently. Is it possible to generate graphs in Japanese language? Any help or samples towards that would be much appreciated.AMG: I freely admit that I know nothing about plotchart, but I do have a basic understanding of Tcl. One thing I know is that Tcl has excellent support for international character sets, and as such should have no difficulty handling Japanese.
set languages {en English es Español fr Français ja 日本語 vi "tiếng Việt" sa संस्कृतम् fa فارسی} dict get $languages jaYou may notice from the Farsi example that Tcl seems to have trouble doing right-to-left text. Maybe there's something special I have to do to make that work right.Maybe plotchat internally assumes ASCII, but I wouldn't know. So I suggest you try it and see, and let us know what happens.AM 2010-06-22: Plotchart itself does not assume anything about the strings, so I imagine that drawing these non-Latin alphabets will work fine. However:
- The saveplot subcommand will probably not do the job correctly: PostScript is very limited in its support for non-ASCII characters.
- If you use X Window, you may need to update your fonts - MS Windows seems to be more inclined to display non-ASCII characters out-of-the-box.
$canvas lower ytickline dataReplace $canvas with your canvas path and ytickline with xtickline, if you have vertical ticklines and not horizontal ones.AM 2010-08-09: I am not quite sure this is a bug ;). It is rather a design issue: if data lines pass over the axis, what should be visible, the data lines or the axis? An option would help, I guess, as there is no definite answer.TR: Maybe you are right. Thinking a little more about it, I can see cases where it is desirable to have even the ticklines in front.
arjen 2010-09-02T03:12:12Torsten Berg and I are working on more features for Plotchart (well, he is doing most of the work at the moment). One of them is animations - that will bring an animated chart like at [1] within easy reach. Some screenshots: Pictures from Plotchart 2.0Version 2.0 will need Tcl/Tk 8.5 and have these enhancements:
- more drawing options and configuration possibilities
- a kind of "style engine" for overall plot layout and style
- support for animations
- drawing of objects in plots (circle, rectangle, text, ...)
- multiple plots on a single canvas (!)
- support for advanced text rendering (subscript, superscript, ...)
- more different box and whisker options
- plotting of functions
- support for custom plot methods
- a number of bug fixes ...
- (demo programme?)
- (handbook?)