[Scilab-users] Fwd: Re: Fwd: plotxxyyy
Jens Simon Strom
j.s.strom at hslmg.de
Thu Oct 13 15:04:14 CEST 2016
Hi FRieder,
The plots look really beautiful. Congratulation!
Normally you should always have an axis. To produce a grid without
'grid' ('cax.grid=[1 1]', see 'axes_properties', 'grid' in the help
pages) you can use
x=0:10; y=-5:5;
[X,Y]=ndgrid(x,y);
xdel();
plot(X,Y)
plot(X',Y')
Kind regards
Jens
.-----------------------------------
Am 13.10.2016 14:05, schrieb Frieder Nikolaisen:
>
> Dear community,
>
> thank you for you support. I get now wonderful plots.
>
> There is still a feature missing: Plot two has not x grid. *How to add
> a grid without a axis?* (I tried a bit with newaxis... no success)
>
> subplot(3, 1, 2)
> co = color("blue");
> plot2d(x1, y2, co);
> b = gca();
> b.font_color = co;
> b.foreground = co;
> *b.axes_visible(1) = "off"; xgrid(co, 1, 10)*
>
>
>
> This code works well now:
> subplot(3, 1, 3)
> co=color("red");
> plot2d(x1, y3, co);
> xgrid(co, 1, 10)
> c = gca();
> c.font_color = co;
> c.foreground = co;
> c.data_bounds = [min(x1),min(y3); max(x1),max(y3)+(max(y3)-min(y3))*0.45]
> //c.axes_visible(1) ="off";
> ylabel(string(kT(y_3)),"color",co)
> xlabel('Sekunden')
>
> x= (A(:,1) - A(1,1)) * 24 * 3600;
> //Input parameters for plotting the measurement numbers with optional gaps and stacking to avoid overlapping
> nstack=5;//maximum number of stacked measurement numbers
> hstack=0.3;//height of measurement number stack (relative to window height)
> ybase=max(y3)*1; //base ordinate for measurement numbers
> yspan=max(y3)-min(y3);
> plot(x1(M),y3(M), 'ko') // fügt schwarze dots hinzu
> for m=1:length(M) //Beschriftung
> xstring(x1(M(m)),ybase+(modulo(M(m),nstack))*hstack*yspan/nstack,string(M(m)))
> set(handles.Anzeige, 'string', 'Diagrammbeschriftung' + string(k) + ' von' + string(A_size(1,1)))
> end
>
>
> If I have a few hours nothingelse to do, I will try to solve the prolbem withDenis sparse function. With out using a for loop, it will be faster.
> Best regards
> Frieder
>
> PS: I wanted to send two plots, but they are 111kB. I plead for a higher limit.
>
>
> On 2016-10-12 20:15, Jens Simon Strom wrote:
>
> Hallo Frieder,
> If you insert
> plot(x(M),y(M),'go') after//Writing measurement numbers
>
>
> you get circle marks at the selected points to ease their correlation to the measurement number.
>
> Kind regards
> Jens
> -----------------------------------------------------------
>
>
> Am 12.10.2016 18:16, schrieb Jens Simon Strom:
>
> Hallo Frieder,
> You can independently combine stack and skip of the
> measurement numbers by the code below.
>
> //Plotting measurement numbers with optional gaps and optional stacking to avoid overlapping
> //Generating dummy measurement data x,y and plotting them
> dx=0.5:50;// increment of x
> x=cumsum(dx);
> y=sind(x);
> yspan=max(y)-min(y);
> nM=length(x);//number of measurements
> xdel();
> plot(x,y,'r')
> plot(x,y,'b+')
>
> //Input parameters for plotting the measurement numbers with optional gaps and stacking to avoid overlapping
> nstack=6;//maximum number of stacked measurement numbers
> hstack=0.1;//height of measurement number stack (relative to span). hstack=0: no stacking independent of nstack
> ybase=-1; //base ordinate for measurement numbers
> step=2;// step=1: no gap, step=2: every second measurement number, etc.
>
> //Writing measurement numbers
> M=1:step:nM;//opted measurement numbers
> for m=1:length(M)
> xstring(x(M(m)),ybase+(modulo(M(m),nstack))*hstack*yspan/nstack,string(M(m)))
> end
>
>
> "How can I move the lettering above the plot (or at least to the bottom, next to the x-axis)?"By data_bounds (see axes_properties in the help pages) you can enlarge the y-axis beyond the y data span at will.The y-level of the lettering is controlled by the input variable 'ybase' (see code above).
>
>
> Kind regards
> Jens
> ---------------------------------------------------------------------------------------------------------------------------------
>
> Am 12.10.2016 14:01, schrieb Frieder Nikolaisen:
>
> Hello everybody,
>
> I did solve the Problem with showing only 10 line numbers,
> by using IF.
>
> printer=1
>
> for k=1:A_size(1,1) //Beschriftung
> *if k>A_size(1,1)*(printer/10) then*
> printer = printer + 1
> xstring(x(k),y3(1),string(k))
> // xstring(x,y,str,[angle,[box]])
> end
> set(handles.Anzeige, 'string', 'Diagrammbeschriftung' + string(k) + ' von' + string(A_size(1,1)))
> end
>
>
>
> The line numbering is connected to the y-axis. How can I move the lattering aboth the plot (or at least the bottom, next to the x-axis)? (attached plot: subplot_with_line_number_2_tenth.gif)
>
>
>
> About Jens help:
>
> I attached three plots: the stacks Picture are with the Code of Jens. Stacking is really nice, but I do not need every line number. With 921 data Points, it is already unreadable again. But thanks for your ideas, the Code is great for learningn anyway.
>
>
>
> Cheers
>
> Frieder
>
> On 2016-10-12 11:48, Jens Simon Strom wrote:
>
> Hello Frieder,
> Your plots look better now. You can avoid overlapping
> of measurement numbers by sawtooth stacking them. See
> example code below.
>
> xdel();
> //Generating dummy measurements x,y
> dx=0.5:50;
> x=cumsum(dx);
> y=sind(x);
> nM=length(x);//number of measurements
> plot(x,y,'r')
> plot(x,y,'b+')
> //Plotting the measurement numbers in stacks to avoid overlapping
> nstack=6;//number of stacked measurement numbers
> hstack=0.2;//height of measurement number stack (relative to window height)
> ybase=-0.9; //base ordinate for measurement numbers
> yspan=max(y)-min(y);
> for m=1:nM//measurement number
> xstring(x(m),ybase+(modulo(m,nstack)-1)*hstack*yspan/nstack,string(m))
> end
>
> Kind regards
> Jens
> ------------------------------------------------------------------------------------------------------------------------------
> Am 12.10.2016 10:52, schrieb Frieder Nikolaisen:
>
> Hello,
>
> thank you for all the feedback and help. It's
> really great.
>
> I used the idea of Jens Simon Strom combined with
> some help from last week:
>
> //Datensätze
> x1 = (A(:,1) - A(1,1)) * 24 * 3600;
> y1 = A(:,y_1);
> y2 = A(:,y_2);
> y3 = A(:,y_3);
> drawlater()
>
> subplot(3, 1, 1)
> co = color("green");
> plot2d(x1, y1, co);
> a = gca();
> b.font_color = co;
> a.foreground = co;
> ylabel(string(kT(y_1)),"color",co)
> a.x_location = 'top';
>
> subplot(3, 1, 2)
> co = color("blue");
> plot2d(x1, y2, co);
> b = gca();
> b.font_color = co;
> b.foreground = co;
> ylabel(string(kT(y_2)),"color",co)
> b.axes_visible(1) = "off";
> //b.marings = [0.1 0.1 0.3 0.5];
> //b.filled ="off";
> subplot(3, 1, 3)
> co=color("red");
> plot2d(x1, y3, co);
> c = gca();
> c.font_color = co;
> c.foreground = co;
> //c.axes_visible(1) ="off";
> ylabel(string(kT(y_3)),"color",co)
> //xlabel(string('Zeit [Sekunden]'), co)
> x= (A(:,1) - A(1,1)) * 24 * 3600;
> for k=1:A_size(1,1) //Beschriftung
> xstring(x(k),x(1),string(k)) // x(1) always 0
> // xstring(x,y,str,[angle,[box]])
> disp(x(1))
> end
> //c.marings = [0.1 0.1 0.5 0.3];
> //c.filled ="off";
>
> drawnow()
>
>
>
>
>
> The printed plots are attached. I did plot different paramters, as I can choose then in my GUI.
>
> That works well:
>
> * Three plots, having the same x axis.
> * x axis on the top and bottom
> * Line *numbers Fitting the x axis*.
>
> That does not work:
>
> * showing a *few line numbers* only,
> for reading (best case: Fitting the automatic
> shown times in sec
>
> Problem: I cannot tell, how many datapoints there
> are going to be. So it mus be choosen automaticly.
>
> Best regards
>
> Frieder
>
> On 2016-10-11 21:04, Samuel Gougeon wrote:
>
> Hello,
>
> Le 11/10/2016 14:46, Rafael Guerra a écrit :
>
> Hi,
>
> I was not able to follow the whole discussion
>
> Neither did i,
>
> but concerning your subplot challenge:
> "/... I cannot add a second x-axis in a
> subplot by newaxis(). How to add a x-axis
> by using subplot?/"and your last example,
>
> Couldn't you add a 4^th subplot at the
> bottom in order to plot the 2^nd x-axis
> (say by plotting only zeros)?
>
> .
> Why not using drawaxis() as already suggested?
> drawaxis() is made for this kind of situation.
> In this thread, no logarithmic axis is
> involved. So i do to catch the reason of
> ignoring drawaxis().
>
> By the way, IMO, a drawing of what exactly is
> required would be clearer than hundred of
> lines of description, with schematic curves,
> axes, arrows linking curves to their multiple
> axes in x and y.
>
> BR
> Samuel Gougeon
>
>
>
> _______________________________________________
> users mailing list
> users at lists.scilab.org
> http://lists.scilab.org/mailman/listinfo/users
>
>
>
> _______________________________________________
> users mailing list
> users at lists.scilab.org
> http://lists.scilab.org/mailman/listinfo/users
>
>
>
> _______________________________________________
> users mailing list
> users at lists.scilab.org
> http://lists.scilab.org/mailman/listinfo/users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20161013/4f9bb7a3/attachment.htm>
More information about the users
mailing list