[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-edu
Subject: Re: LabPlot2 for kde-edu?
From: Alexander Semke <Alexander.Semke () web ! de>
Date: 2014-01-01 15:52:01
Message-ID: 1549357.sDtrTCBCId () linux-7xsw ! site
[Download RAW message or body]
Hi,
> Hi,
> I'm the maintainer of Cantor.
> As Aleix already pointed out, the requirements for joining the KDE family
> are quite low, and I'd like to encourage you to join.
> I agree that there are could be some interesting possible cooperation
> between Cantor and LabView.
> For example at the moment most(all, since I still owe Aleix the \
> integration of the kalgebra-QML-item branch, sorry about that) of the \
> plotting support in Cantor is static (i.e. showing an image), and due to \
> the way most backends are implemented as separate processes this is hard \
> to change. Instead we could offer our own interactive plotting fallback \
> for which the backend only has to feed the data, which is much easier to \
> do. What do you think? Does LabView offer a simple API for cases like \
> that?
Yes. Let me give you more information. Currently, the worklflow in labplot \
is the following: you create a new project, worksheet, xy-plot and a \
xy-curve. Then you specify the data sets to be used for the x and for the \
y-data of this xy-curve. These data sources can originate from a \
spreadsheet where you type in the data by hand or where you import the \
data from an external ascii-file to the spreadsheet. So, in principle you \
just have to select a column. Internaly, such an Column object is just a \
wrapper over QList<double> (implementations for QList<QDateTime> etc. will \
follow in the next months). We just need to fill such Columns. At the \
moment, the labplot-user selects in a tree-like ComboBox the columns. \
Columns belong in this tree-hierarchie to Sreadsheets. Now, my idea was to \
integrate/embed Cantor into LabPlot. The user creates, e.g., a \
Maxima-session in LabPlot and performs some calculaitons leading to some \
arrays or lists or however these objects are named in the specific CAS \
where the results for the plots are stored. These arrays/lists we need to \
expose from Cantor to LabPlot. Then, the user selects in the ComboBox the \
Maxima-session and one of its children (array/list with the actual data) \
as the source for x- or y-data. By having this, we can combine the data \
originated from different sources - imported from an ascii-data, provided \
by hand in a spreadsheet or caclulated in maxima, octave etc.
So, this was a LabPlot-centric suggestion where Cantor would "just" take a
role of an additional data provider for the plots. Consider now the Cantor-
centric way of thinking. You create a plot and want to easily edit plot
features. As you said, you show currently a static picture generated by a
different framework. For this you could use something like QCustomPlot \
which is Qt-based, can be embedded in any project and provides a lot of \
features and a clean interface. But then you still need to implement a lot \
of GUI-stuff when you want to provide easy ways of editing of the plot \
appearence. This is where LabPlot can help since a lot of GUI-stuff for \
everything you see on the plot (or worksheet in general) is already \
available. The only problem here I see now is the fact that you need to \
create first a worksheet and then a plot. Internaly, worksheet provides \
you a QGraphicsScene/View and a plot inherits from QGraphicsItem. So, you \
create a worksheet and then a plot with axes and curves, activate a layout \
with zero margins and embed this QGraphicsView into you session-widget \
instead of a static picture. LabPlot's worksheet is shown within another \
widget instead of being an MDI-sub-window. And then you need to embed all \
LabPlot's dock widgets... LabPlot's API is simple. As an example take a \
look at CartesianPlot::initDefault() here
https://sourceforge.net/p/labplot/code/HEAD/tree/2.0/src/backend/worksheet/plots/cartesian/CartesianPlot.cpp
You can also have a look at Axis.h or at XYCurve.h if you want to see \
which properties of these object can be modified. But it's easier to \
compile and to install LabPlot and to give it a try :-)
Just thought a bit longer about this... I think, it would be easier to use
Cantor within LabPlot then the other was around if you want to have all the \
editing properties currently available with everything being \
undoable/redoable etc. In the long term, I can think of LabPlot being, \
with the help of Cantor, a complete and feature-rich frontend to different \
CASes. LabPlot provides you a "project explorer" where you have an \
overview of all objects you've created. On the screenshots in Stuart's blog \
you see this project explorer on the left hand side. Having a \
maxima-session for example, you would have a parent node in the project \
explorer for this and as children nodes you could have all your variables, \
expressions, equations, inputs, plots, tables etc so you can easily \
navigate through your session. The middle part of LabPlot is the place for \
the actual "content" - worksheet, spreadsheet, CAS-sessions, text editor \
windows for scripting stuff. On the r.h.s you have the dock widgets were \
you can edit a lot of properties of the currently selected object (or \
objects, yes, you can edit multiple object of the same type simultaniously \
- say, you can edit the line width of ten curves in a single step). For \
CAS one could show here the context related documentation. Something \
similar you already have in Cantor.
> As far as using Cantor to integrate other CASes, if you have a look at
> cantor/src/lib you see that internally Cantor is designed very modular \
> and provides a library which abstracts away all the backend specifics and \
> is independent of the worksheet ui. You can just send a command and get \
> the results. This should give you a simple access to all the different \
> languages supported. (Although for big amounts of data it might be \
> necessary to come up with something faster than using stdout+parsing). If \
> you're interested in trying it out, feel free to ask me anything.
I don't intend to integrate new CASes. Maxima and Octave as additional data \
providers within LabPlot at the beginnig would be more than greate :-)
Serializing/deserializing of data is, I think, good enough at the \
beginning.
Best regards
Alexander
P.S.: Just wanted to try out plotting in Cantor, but I failed to produce a
plot in Maxima with plot2d(sin(x),(x,-1,1)) - I get an image with a lot of
mess. Cannot send the screenshot here since there is a size limit on this
mailing list... Cantor crashes if I try to replot this a couple of time. I \
can fill a bug report, if this is an unknown problem. If I add an \
additional $ at the end of the line, the plot appears in an external \
window. _______________________________________________
kde-edu mailing list
kde-edu@mail.kde.org
https://mail.kde.org/mailman/listinfo/kde-edu
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic