- Undocumented Matlab - https://undocumentedmatlab.com -

Waterloo graphics

Posted By Yair Altman On November 28, 2012 | 39 Comments

Once again I would like to welcome guest blogger Malcolm Lidierth [1] of King’s College London, who has already written here [2] in the past. Today Malcolm will describe the Waterloo open-source project and its usage in Matlab.

The Waterloo graphics project

One of Matlab’s limitations is the quality of its 2D graphics. Plots are more pixellated [3] and less interactive [4] than some might expect in a modern programming environment.
A recent addition to the open-source Waterloo [5] graphics library addresses this by providing a pure Java library of 2D graphics functions that can easily be integrated in Matlab. An accompanying Matlab library provides support for these objects in Matlab OOP wrappers. While these do not quite provide a drop-in replacement for Matlab graphics code, in most instances they require very few code line changes to try out the library using existing Matlab code. Here is a taster of some of the plots presently supported:

Figure 1: Some Waterloo graphs showing a selection of some of the plots available. The list of available plots will grow in time. Click for details [6]
Figure 1: Some Waterloo graphs showing a selection of some of the plots available. The list of available plots will grow in time. Click for details

Waterloo is a free, open-source project and it draws upon resources from many other open-source resources: notably the JXGraph class that is part of the SwingLabs SwingX project [7] and was originally developed for the “Filthy Rich Clients [8]” book by Chet Haase and Romain Guy. JXGraph formed the basis for some of the core graphics classes in Waterloo.

Main features

Highlights of the project include:

  • Platform-independent, pure Java library callable from any environment that supports a Java Virtual Machine (JVM). So far, I have tested it with Groovy, Java, Matlab, the R statistical environment, Scala and SciLab.
  • High-speed rendering if you activate the appropriate graphics pipeline – e.g. DirectX for Windows and Quartz for Mac.
  • Anti-aliased graphics and text together with full support for transparency supported at color, plot and graph levels.
  • Graphics can be annotated with lines, arrows, text etc that are Java Graphics 2D–based, but also, because the graphs are Swing-based, with other Swing components such as JLabels, JTextFields etc.
  • As Waterloo graphs are also Swing components, they too can be added to other Swing components (a Matlab figure for example) as well as to other graphs, for example to create graphical insets.
  • Multi-layered graphs, with each layer having independent axes.
  • Figure 2: A multi-layered graph. Each plot has its own graph layer with independent axes.
    Figure 2: A multi-layered graph. Each plot has its own graph layer with independent axes.

  • Built-in mouse interactivity and GUIs for interactive plot editing.
  • Figure 3: A plot editor for a single-layered graph. Java programmers might note here the use of a few custom-designed Swing widgets: a dial that subclasses JSlider and supports multiple-turns, and a color chooser that uses standard names for web colors. Click for details [9]
    Figure 3: A plot editor for a single-layered graph. Java programmers might note here the use of a few custom-designed Swing widgets: a dial that subclasses JSlider and supports multiple-turns, and a color chooser that uses standard names for web colors. Click for details

  • Linear and log axes implemented via Java objects that also format the axes labeling etc.: so for a log axis you have a choice of base 10, 2 and e as well as -log10. Polar plotting is partially implemented and will be improved in later releases.
  • User-selectable preference settings with a GUI to change them (and save them across sessions).
  • Waterloo preferences
    Waterloo preferences

  • Export to PDF and SVG files – and also to the clipboard with preservation of vector graphics quality if your platform supports it. In designing the Java Graphics 2D methods, care has been taken to optimize the grouping of graphics objects to facilitate editing in vector-graphics based packages such as Adobe Illustrator and the open-source InkScape editor. Support is included also for bitmap graphics output to both file and clipboard.
  • Graphics can be saved to portable XML files. These use the standard java.util.bean.XMLCoder, which is a built-in feature of all JVMs so the files are fully portable. Full serialization/de-serialization is supported so the full state of the graph when it was saved is restored on reloading. Writing and reading of these files has built-in support for gzip compression and decompression of the XML data stream.
  • An interactive GUI-based “Graph Explorer” that can be run as a stand-alone Java executable to view the generated graphs, or be run from a console session (including from the Matlab desktop; note that until I find a fix, Unix-based platforms will need Matlab R2012a or later for this). You can share XML files with others: they can view and edit them without Matlab.
  • Tested so far on Windows XP/7 (Oracle JRE 6 &anp; 7), Mac OS Snow Leopard (Apple JRE 6 & OpenJDK 7) and Ubuntu Linux 12.10 (IcedTea OpenJDK JRE 6 & 7).

Benefits for Matlab users

For Matlab-users, we can add:

  • Runs “out-of-the-box”. Unzip the distribution and add the Waterloo Matlab Library folder to your path. Running waterloo.m then adds everything needed to the path and sets up the Java dynamic class path for the current Matlab session – so Waterloo is only installed when needed. However, for all JRE 6-based Matlab versions, I would recommend upgrading to the latest JRE 6 release (update 37 at the time of writing): you will get better and faster graphics performance and recent security fixes (including some relevant to the use of XML files as in Waterloo). For best performance on Windows, also edit or create a “java.opts” file to activate DirectX graphics pipeline (then restart Matlab: you cannot alter this setting for the current JVM session). Use: -Dsun.java2d.noddraw=false
  • Integration of the Waterloo and Matlab graphics via Matlab OOP wrappers. You can mix-and-match Waterloo and standard Matlab graphics in a single Matlab figure.
  • Mixed Matlab and Waterloo graphics are treated specially for serialization. Waterloo creates a folder instead of a single file containing [1] a Matlab .fig file, [2] a Waterloo XML file, and [3] a set of image files – one for each Matlab axes object. In Matlab, the folder can be re-loaded and both Matlab and Waterloo graphics will be fully de-serialized. Outside of Matlab, e.g. in the Waterloo Graph Explorer, the image files will be used to display Matlab graphs. By default, these images are saved as PNG files but you can install a custom function to generate other formats including SVG (Graph Explorer provides an SVG viewer using Apache Batik [10]).
  • The Graph Explorer embeds a copy of the Groovy Console so users can pass variables between the host workspace and the console and use it to run Groovy scripts from Matlab, R, SciLab etc.
  • Tested variously on Matlab R2008a through R2012b on Mac, Windows and Ubuntu Linux. Although the Matlab OOP uses R2008+ classes, the base Java library could probably be invoked directly from earlier Matlab versions.
  • Ability to attach Matlab callbacks to the underlying Java objects. That includes property change callbacks for data objects, individual plots and graphs and for their Swing containers.

Sample Matlab usage

I will finish with a simple example of mixing Matlab and Waterloo graphics:

% Create some data
t = 0 : .035 : 2*pi;
[x,y] = pol2cart(t, sin(2*t).*cos(2*t));
% Now do the plotting
hFig = GXFigure(); % Create Waterloo-enabled Matlab figure
ax1 = subplot(1,  2, 1); % Create Matlab axes
ax2 = subplot(hFig, 1, 2, 2); % Create Waterloo "axes"
scatter(ax1, x, y); % Matlab scatter plot
scatter(ax2, x, y); % Waterloo scatter plot
set(gcf, 'Units', 'normalized', 'Position', [0.1 0.1 0.8 0.8]);

Here is the output:

Figure 5: Mixed Matlab and Waterloo graphics in a single Matlab figure. Click for details [11]
Figure 5: Mixed Matlab and Waterloo graphics in a single Matlab figure. Click for details

Next week, I will give more Matlab code examples.

Categories: Guest bloggers, GUI, Java, Medium risk of breaking in future versions


39 Comments (Open | Close)

39 Comments To "Waterloo graphics"

#1 Comment By Slayton On November 29, 2012 @ 06:50

I’ve been wondering for years why someone had not already written a nice replacement for the Matlab plotting libraries. I’m excited to try out Waterloo although I’m a bit disappointed by the state of the website. Hopefully they’ve put more effort into the actual library than they did for their website.

#2 Comment By Malcolm Lidierth On November 29, 2012 @ 10:12

@Slayton
Library – close to 2 years
Website – about 4 days, but I am hoping any problems you had were temporary blip – I was seeing missing pages etc today too but the web pages are there. It may be related to a SourceForge hardware upgrade that started yesterday.

#3 Comment By Dani On December 2, 2012 @ 13:16

Downloaded it, works like a charm. Could not figure out how to zoom though.

#4 Comment By Malcolm Lidierth On December 2, 2012 @ 16:19

@Dani
You can
1. Press and move the mouse on the GRAPH to shift the graph axes left/right/up/down
2. Press and move the mouse on an AXIS to “zoom” (shrink or expand) it (towards zero drags the limits inwards/away drags them outwards)
3. Double-click a graph to bring up the editor GUI and set the axis limits in that.
4. Also in the editor, set the rotation and zoom – but “zoom” here shrinks/expands the area of the graph in its container which may not be what you mean. Its useful when a rotated graph has its corners outside of the clip limits of the container.

If any of that does not work please let me know about platform/Java/MATLAB version etc.

If there are features you think should be included, also please shout.

#5 Comment By William Stevenson On December 3, 2012 @ 09:00

I get the following error:
Looking for sigTOOL support…??? Undefined variable “kcl” or class
“kcl.waterloo.graphics.gui.Welcome.createWelcome”.

Error in ==> waterloo at 235
welcomeFrame=kcl.waterloo.graphics.gui.Welcome.createWelcome();

#6 Comment By Malcolm Lidierth On December 3, 2012 @ 12:26

@William
My guess is that you have installed only the Waterloo_MATLAB_Library folder. That needs to be added to the MATLAB path (without subfolders) but needs to be located in the waterloo folder with all its sibling folders, That is where all the Java code is to be found including e.g. kcl.waterloo.graphics.gui.Welcome.createWelcome.
Waterloo uses relative paths to find everything it needs – whether you are in MATLAB, R, Groovy or any of the other supported environments.
See [18]

#7 Comment By Xin Jin On December 7, 2012 @ 06:55

Hi there,
I am trying to use Waterloo graphics on Win7.
Here is the error message when I tried to test the scatterplot case described in your email.
Something still missing?

Undefined variable "kcl" or class "kcl.waterloo.graphics.GJGraph.createInstance".

Error in GXGraph (line 36)
                graphicObject=kcl.waterloo.graphics.GJGraph.createInstance();

Error in GXFigure/subplot (line 112)
                varargout{1}=GXGraph(p);

#8 Comment By Malcolm Lidierth On December 7, 2012 @ 18:08

@Xin
See the answer above to @William.
ML

#9 Comment By Ruben On December 13, 2012 @ 18:58

I have installed the Waterloo folder. I ran the “waterloo.m” file and this was OK.
Next I tried to run the “waterloodemo.m” file and I got the following error:
The class “GTool” is undefined.
Perhaps Java is not running.

Error in waterloodemo (line 23)
GTool.setTheme(‘blue’);

#10 Comment By Malcolm Lidierth On December 14, 2012 @ 05:35

Ruben
What does

 
which GTool

at the command line return?

#11 Comment By Dinesh Dileep On January 27, 2013 @ 22:10

I got the same error. I tried “which GTool”. It says “not found”.

#12 Comment By Dinesh Dileep On January 27, 2013 @ 22:13

Actually I figured out the problem. I had to set path with option of adding all subfolders.

#13 Comment By Malcolm Lidierth On January 28, 2013 @ 01:34

@Dinesh
waterloo.m adds the sub-folders when you run it – and does more besides e.g. adding with subfolders will not set up the java class path.

#14 Comment By Yoshi On July 4, 2013 @ 02:01

Hi, I also got the same error…
“which GTool” says
“/Applications/MATLAB74/waterloo/Waterloo_MATLAB_Library/Waterloo_Swing_Library/GTools/GTool.m”

MATLAB Version: R2007a
Java VM Version: Java 1.6.0_51 with Apple Inc. Java HotSpot(TM) Client VM mixed mode

Thank you in advance for your help.

#15 Comment By Malcolm Lidierth On July 4, 2013 @ 07:39

@Yoshi
I am afraid you need R2008a or later in any case to use GTool.

#16 Comment By qt On December 19, 2012 @ 04:07

Hi there..

I am trying to run matlab r2010a with java 1.7, by changing MATLAB_JAVA to a location with jre7. That works fine for everything but plots, so I was hoping waterloo would resolve my problem.

I tried installing waterloo, but still I only get “grey” windows when i try to plot something e.g:

hFig = GXFigure();
plot(1:100)

That is the same behavior I see for normal plotting:

figure,plot(1:100)

Has anyone else been able to use java 1.7 with matlab?

#17 Comment By HAC On December 20, 2012 @ 13:40

I’ve been able to use JRE 1.7 with Matlab 2012b (win7 64-bit). Waterloo appears to work fine.

#18 Comment By Malcolm Lidierth On December 21, 2012 @ 05:34

@qt
See the examples [19]

#19 Comment By Alex On January 11, 2013 @ 03:56

Yes you’re completely right!
The native plotted graph in Matlab is very ugly.
I’ve been written my own graph api in java for 2D line graph (very simple) to use in matlab since few years.
I will try this nice projet.

#20 Comment By Valeri On January 20, 2013 @ 09:00

Very impressive library! Do you have it implemented in a pure Java project (not depending on Matlab)? Could you, please, give me a link for any example in Java application.
Sincerely, Valeri

#21 Comment By Malcolm Lidierth On January 21, 2013 @ 09:46

Take a look at this [20].
Lots of Java/Groovy examples/tutorials and more to come.
Malcolm

#22 Comment By Valeri On January 21, 2013 @ 10:29

Thank you, I have found only one Groovy example (Scatter) in the Code Examples section.
At least it is something to start. But I am looking forward for Java examples.
Appreciate to have them in the nearest future.

#23 Comment By Malcolm Lidierth On January 21, 2013 @ 18:24

@Valeri
Take at a look at the kcl.waterloo.demo package in kcl-waterloo-base.jar.

#24 Comment By Valeri On January 22, 2013 @ 13:19

Thank you. It is looking pretty encouraging. The problem is only that I am newbie in Java (always working with C,C++,Matlab) and to make the transition from the library functions to the desktop application is a big distance for me. I’ll try,but it is better to find the ready project to learn the transition. At least for the scientific graphics (from small details to big animations) Java gives more flexible environment and I have no choice.

#25 Comment By Malcolm Lidierth On January 23, 2013 @ 04:52

I know the problem having moved to Java from MATLAB/Fortran some years back. Are you using the MATLAB editor to write code? Eclipse, Netbeans, IntelliJ etc (all free) provide fantastic as-you-type coding tips.

#26 Comment By Valeri On January 23, 2013 @ 12:50

I am using NetBeans 7.01, because it has also a gui editor. No problems with gui, it can be perfectly constructed even in C,C++, but the real bottle neck is the scientific graphics of publication quality. I am already tied to jump between Matlab, PowerPoint, CorelDraw to make axes, ticks, texts, extra pictures inside main figures in an appropriate shape. LaTeX doesn’t help. The best thing would be to have a good formatted picture already when processing data. GnuPlot has low quality. MathGL is slow in animation. Only JavaView is enough fast and has a good graphics quality (but, unfortunately only for 3D and not in the processing time). I was not able to find something appropriate in C,C++, but some examples in Java2D are encouraging. That’s why I am here.

#27 Comment By Malcolm Lidierth On January 24, 2013 @ 05:33

@Valeri
Not quite sure what you a trying but you can get good SVG and PDF output from Waterloo. The dev release also now has an HTML output that uses the SVG as the base to paint to an HTML5 canvas via the canvg javascript – that gives consistent performance across browsers back to Safari 5.1 and IE7 (using flashcanvas).

You can easily add images from CorelDraw/Powerpoint to Waterloo graphs – they are Swing components.

Speed. There are many speed improvements that will be made in time e.g. there is no need to repaint the graph containers/grids on every refresh – an offscreen buffer could often be blitted in.

#28 Comment By Johannes Korsawe On February 14, 2013 @ 06:36

This looks neat! However, i have a problem if i compile the example code, Malcolm gave from up there. Error message reads:

>> mcc -vm comptest_waterloo
Compiler version: 4.14 (R2010b)  
Depfun error: 'Error: File: Y:\waterloo\Waterloo_MATLAB_Library\Waterloo_Swing_Library\@MUtilities\MUtilities_R2006b_onwards.m Line: 1 Column: 10 
Class name and filename do not agree.' 
??? Error using ==> mcc
Error executing mcc, return status = 1 (0x1).

What do I have to take into account if I want to use Waterloo graphics inside some MATLAB code and deploy it as usual as a standalone application?

Best regards,
Johannes

#29 Comment By Johannes Korsawe On February 14, 2013 @ 07:11

I was now able to compile by giving the two files MUtilities_R2006a.m and MUtilities_R2006b_onwards.m another suffix, e.g. .EMM . Now i have the file comptest_waterloo.exe.

But now i have another problem: I added the path to the Waterloo_MATLAB_Library to my default MATLAB path. In startup.m i added the command waterloo; s.t. the correct environment shows up at MATLAB startup. By doing so and compiling, i hoped the necessary informations to be added to the compilated executable automatically.

However, if i try to execute the executable (no matter if from DOS window or by MATLAB ! system command), i get the following error messages:

>> !comptest_waterloo.exe

Project Waterloo…Graphics Library loaded…Swing Library loaded…Utilities loaded

Project Waterloo [Version=1.1 Dated:14-Feb-2013 15:04:00]
Setting up Waterloo distribution

Project Waterloo Java files added to MATLAB Java class path

Looking for sigTOOL support…??? Undefined variable “kcl” or class
“kcl.waterloo.graphics.gui.Welcome.createWelcome”.

Error in ==> waterloo at 235

Error in ==> startup at 4

??? Undefined variable “kcl” or class
“kcl.waterloo.graphics.GJGraph.createInstance”.

Error in ==> GXGraph.GXGraph>GXGraph.GXGraph at 36

Error in ==> GXFigure.subplot at 112

Error in ==> comptest_waterloo at 8

Undefined variable “kcl” or class “kcl.waterloo.graphics.GJGraph.createInstance”.
MATLAB:undefinedVarOrClass

I assume

#30 Comment By Johannes Korsawe On February 14, 2013 @ 07:13

I assume, i either have to configure my Windows system in a way it respects the waterloo JAVA libraries, or i have to link the waterloo libraries into the executable by using the deploytool (?).

Any help appreciated!

Best regards,
Johannes

#31 Comment By Malcolm Lidierth On February 16, 2013 @ 11:53

Johannes

I have little MCR/deploytool experience.

[1] MUtilities_R2006b_onwards.m can be deleted – there are two legacy copies of MUtilities than work back to R2006a. They are not needed on modern MATLABs and upset deploytool.

[2] Am I right in thinking that your deployed app is calling waterloo.m?
That is not needed. waterloo.m dynamically sets up the paths for a MATLAB session from inside the desktop. If that is run before deploying the app, there should be no need to do it again from within the app (and it may well not work because paths are set relative to the waterloo.m file path).

ML

#32 Comment By Daniel Gallichan On May 30, 2013 @ 02:05

I just tried to install Waterloo on OSX 10.8.3 with Matlab R2013a and I get this:

>> addpath ~/matlabdownloads/Waterloo_MATLAB_Library/
>> waterloo

Project Waterloo...Graphics Library loaded...Swing Library loaded...Utilities loaded

Project Waterloo [Version=1.1 Dated:18-Nov-2012 13:21:10]
Setting up Waterloo distribution

Project Waterloo Java files added to MATLAB Java class path

Looking for sigTOOL support...   
Undefined variable "kcl" or class "kcl.waterloo.graphics.gui.Welcome.createWelcome".

Error in waterloo (line 235)
welcomeFrame=kcl.waterloo.graphics.gui.Welcome.createWelcome();

(In case it’s also relevant, I have Java 7 Update 21 installed)

Any suggestions what I might try to get it to work?

Thanks
Dan

#33 Comment By Malcolm Lidierth On May 30, 2013 @ 02:53

@Dan

You seem to have the Waterloo MATLAB Library only where you need to install the other components also.
You need a main folder named “waterloo” as the code uses relative addressing to find everything it needs.

The beta version (Git only at present) gives more helpful error messages in such cases.

The short script below will do all the work if you prefer from inside MATLAB – but I would recommend a clean MATLAB session. Cut and paste this into the MATLAB command window. Installation on Mountain Lion will normally be to ~/Documents/waterloo.

Notes:
1. Do not save the path afterwards. Waterloo.m sets ups the path automatically in each session (that speeds up MATLAB searches when Waterloo is not in use).
2. You may her the cooling fan kick in – that is likely to be anti-virus software checking all the java .jar files which are compressed.

% To use Waterloo, you need to type "waterloo" at the MATLAB prompt
% at the start of each subsequent MATLAB session
if ~isempty(which('waterloo.m'))
    fprintf('It looks like Waterloo is already present at:\n%s\n',strrep(which('waterloo.m'),[filesep 'Waterloo_MATLAB_Library' filesep 'waterloo.m'],''));
    disp('Delete the old waterloo folder and remove it from your MATLAB path first');
else
    installFolder=fullfile(char(java.lang.System.getProperty('user.home')), 'Documents');
    disp('Downloading zip.....this will take a few minutes');
    % N.B. Using latest here is not guaranteed to give the same result as clicking latest on the sourceforge site.
    f=unzip('http://sourceforge.net/projects/waterloo/files/Waterloo%5B1.1Alpha2%5D/Waterloo%5B1.1Alpha2%5D.zip/download', installFolder);
    disp('Setting MATLAB Path.....');
    if isdir(fullfile(installFolder,'waterloo','Waterloo_MATLAB_Library'))
        addpath(fullfile(installFolder,'waterloo','Waterloo_MATLAB_Library'));
        savepath();
        fprintf('Installed the following %d files/folders:\n', numel(f));
        for k=1:numel(f)
            disp(f{k});
        end
        disp('To use Waterloo, you need to type "waterloo" at the MATLAB prompt during each MATLAB session');
        waterloo();
        disp('Note: You may be prompted to add a Waterloo Setting folder when first running Waterloo');
        disp('This allows you to set user-specified default colors etc.');
    else
        disp('Installation was not successful');
    end
end

#34 Comment By Malcolm Lidierth On May 30, 2013 @ 02:59

@Dan

Also, which version of Java does MATLAB use? Type ver at the matlab prompt. You should see something like:

Operating System: Mac OS X  Version: 10.8.3 Build: 12D78 
Java Version: Java 1.6.0_45-b06-451-11M4406 with Apple Inc. Java HotSpot(TM) 64-Bit Server VM mixed mode

AFAIK, there is no way to get MATLAB to recognise Java 7 on Mac. If you have found a way, I’d like to know it too.

#35 Comment By Malcolm Lidierth On June 19, 2013 @ 18:22

A beta release of Waterloo was posted a few days ago and has led to a sudden, and confusing, increase in downloads of the previous Alpha2 release. My guess is the script above may be to blame, so here is an updated version (it really should be written to find the latest version automatically but I have not found a way to do that yet, simply using the “latest” URL copied from the SourceForge download button will not work – any suggestions welcomed).

% To use Waterloo, you need to type "waterloo" at the MATLAB prompt
% at the start of each subsequent MATLAB session
if ~isempty(which('waterloo.m'))
    fprintf('It looks like Waterloo is already present at:\n%s\n',strrep(which('waterloo.m'),[filesep 'Waterloo_MATLAB_Library' filesep 'waterloo.m'],''));
    disp('Delete the old waterloo folder and remove it from your MATLAB path first');
else
    installFolder=fullfile(char(java.lang.System.getProperty('user.home')), 'Documents');
    disp('Downloading zip.....this will take a few minutes');
    % N.B. Using latest here does is not guaranteed to  give the same result as clicking latest on
    % the sourceforge site.
    f=unzip('http://sourceforge.net/projects/waterloo/files/Waterloo%5B1.1Beta%5D/waterloo.zip/download', installFolder);
    disp('Setting MATLAB Path.....');
    if isdir(fullfile(installFolder,'waterloo','Waterloo_MATLAB_Library'))
        addpath(fullfile(installFolder,'waterloo','Waterloo_MATLAB_Library'));
        savepath();
        fprintf('Installed the following %d files/folders:\n', numel(f));
        for k=1:numel(f)
            disp(f{k});
        end
        disp('To use Waterloo, you need to type "waterloo" at the MATLAB prompt during each MATLAB session');
        waterloo();
        disp('Note: You may be prompted to add a Waterloo Setting folder when first running Waterloo');
        disp('This allows you to set user-specified default colors etc.');
    else
        disp('Installation was not successful');
    end
end

#36 Pingback By Waterloo graphics beta | Undocumented Matlab On June 26, 2013 @ 11:02

[…] Malcolm Lidierth of King’s College London. Malcolm has written several articles here, including a couple of articles on his Waterloo graphing library. Today, Malcolm discusses new features in this library, as it […]

#37 Pingback By Waterloo graphics examples | Undocumented Matlab On July 2, 2013 @ 10:01

[…] usage examplesIB-Matlab partnersMatlab-Java bookTODOPoliciesSite map ← Waterloo graphics Pinning annotations to graphs […]

#38 Pingback By Plotly graphs | Undocumented Matlab On December 19, 2013 @ 16:30

[…] the integration of Plotly graphs and charts in Matlab. Unlike the open-source JFreeChart and Waterloo plotting libraries that were described here in the past, Plotly is a commercial (not open-source) […]

#39 Comment By Mike Peschel On February 25, 2017 @ 07:40

Hi Malcolm,
is there an equivalent to Matlab’s image() or imagesc() function in Waterloo?
Thanks!


Article printed from Undocumented Matlab: https://undocumentedmatlab.com

URL to article: https://undocumentedmatlab.com/articles/waterloo-graphics

URLs in this post:

[1] Malcolm Lidierth: http://www.mathworks.com/matlabcentral/fileexchange/authors/23816

[2] written here: http://undocumentedmatlab.com/blog/tag/malcolm-lidierth/

[3] pixellated: http://undocumentedmatlab.com/blog/plot-linesmoothing-property/

[4] less interactive: http://undocumentedmatlab.com/blog/continuous-slider-callback/

[5] Waterloo: http://waterloo.sourceforge.net/

[6] Image: http://undocumentedmatlab.com/images/Waterloo_samples.png

[7] SwingLabs SwingX project: http://swingx.java.net/

[8] Filthy Rich Clients: http://filthyrichclients.org/

[9] Image: http://undocumentedmatlab.com/images/Waterloo_plot_editor.jpg

[10] Apache Batik: http://xmlgraphics.apache.org/batik/

[11] Image: http://undocumentedmatlab.com/images/Waterloo_mixed.png

[12] Waterloo graphics examples : https://undocumentedmatlab.com/articles/waterloo-graphics-examples

[13] Waterloo graphics beta : https://undocumentedmatlab.com/articles/waterloo-graphics-beta

[14] Waterloo graphics animation and web deployment : https://undocumentedmatlab.com/articles/waterloo-graphics-animation-web-deployment

[15] Improving graphics interactivity : https://undocumentedmatlab.com/articles/improving-graphics-interactivity

[16] Handle Graphics Behavior : https://undocumentedmatlab.com/articles/handle-graphics-behavior

[17] Undocumented HG2 graphics events : https://undocumentedmatlab.com/articles/undocumented-hg2-graphics-events

[18] : http://waterloo.sourceforge.net/installation.html

[19] : https://undocumentedmatlab.com/blog/waterloo-graphics-examples/

[20] : http://waterloo.sourceforge.net

Copyright © Yair Altman - Undocumented Matlab. All rights reserved.