Thanks a lot for your detailed description.

在2021年11月14日星期日 UTC+8 05:48:46<[email protected]> 写道:

> I have added a section to the docstring of the command to cover how to 
> install it and bind it to a key, button, or menu .  The update is available 
> on the latest 6.6 branch, in scripts.leo.
>
> On Saturday, November 13, 2021 at 11:44:15 AM UTC-5 [email protected] 
> wrote:
>
>>  First, you need to install the command. To do that, copy the node from 
>> scripts.leo to myLeoSettings.leo under the *@settings* tree and name the 
>> node @command plot-2d-clipboard (you can name it anything you want).  
>> After restarting Leo (or maybe after only reloading settings, I'm not sure 
>> about that), you will have the command available.
>>
>> After you have data in the clipboard, you need to invoke the command.  
>> That would be ALT-X plot-2d-clipboard. That will plot the data.  The 
>> node that you were on when you pressed CTRL-B probably didn't actually have 
>> a script.  That is all right - you just didn't need to use CTRL-B because 
>> you already had the data in the clibpoard.  Once the data is in the 
>> clipboard, it will be plotted by invoking the command and you don't need to 
>> run a script.  If the selected node has a *[labels]* section, then the 
>> command will use the labels that are defined in the section.
>>
>> You can also connect the command to a button by adding an *@button* node 
>> for it to myLeoSettings.leo.  If you know how to add your own menu items, 
>> you can also connect the command to one of those with an *@menu* node 
>> (that is what I have done), or you could bind it to a key by means of the 
>> *@shortcuts* node in myLeoSettings.leo..
>>
>> The only time you would need to run a script in a node is when you want 
>> to compute the data and then plot it.  The script should end by copying the 
>> data to the clipboard.  Here is a complete example of creating data, 
>> converting it to a string, and copying the data string to the clipboard.  
>> After executing the node with CTRL-B, you need to invoke the plotting 
>> command to actually plot it.
>>
>> import pyperclip
>>
>> x = range(10)
>> y = [z**2 for z in x]
>>
>> result = '\n'.join([f'{xx}  {yy}' for xx, yy in zip(x, y)])
>> pyperclip.copy(result)
>>
>> @
>> [labels]
>> title = Example Plot
>>
>> I have attached the plot I got from this node as a .png file.
>>
>> You can even make this node plot itself by adding the following line 
>> after the data is copied to the clipboard:
>>
>> c.k.simulateCommand('plot-2d-clipboard')
>>
>> With this line, when you press CTRL-B, the curve will be computed, 
>> converted to the right string format, and plotted.
>>
>> Remember - the "@" before the *[labels]* section is needed to prevent 
>> Leo from trying to execute that section (which it cannot do since it is not 
>> python code).  Any text following the "@" line will be ignored by the 
>> CTRL-B command.  If you do not include a section like that, you do not need 
>> the "@" either.
>>
>> This is one of those things that are lengthy to explain but very simple 
>> to actually do. I am finding that I use the plotting command frequently. 
>> On Saturday, November 13, 2021 at 8:53:30 AM UTC-5 [email protected] 
>> wrote:
>>
>>> 1. pip install pyperclip
>>> 2. git pull
>>>
>>> 3. copy example data
>>>
>>> 4. Ctrl+B
>>>
>>> return: *no script selected*
>>>
>>> *Is there anything wrong with my operation?*
>>> 在2021年11月12日星期五 UTC+8 上午11:02:04<[email protected]> 写道:
>>>
>>>> If you have a node that reads or computes some X-Y data, you can add 
>>>> axis labels and a title to your clipboard plot by protecting the 
>>>> *[labels]* section with and "@" directive.  This causes the following 
>>>> text to be ignored when the script is executed by CNTL-B of with VR3, but 
>>>> it does not hide the section from the plot clipboard command.  Here is an 
>>>> example.  Let's read annual global surface temperature from a file, then 
>>>> plot it.  The file will contain rows like this:
>>>>
>>>> 1900   0.395
>>>> 1901   0.438
>>>> # etc.
>>>>
>>>> The code and the *[labels] *section could look like this:
>>>>
>>>> import pyperclip
>>>> datafile = r'c:\data\sst.txt'
>>>> with open(datafile) as file:
>>>>     data = file.read()
>>>> pyperclip.copy(data)
>>>>
>>>> @
>>>> [labels]
>>>> title = Global Surface Temperature Vs Year
>>>> xaxis = Year
>>>> yaxis = "Global Average Surface Temperature, Deg C.
>>>>
>>>> When you run this node, say with CTRL-B, the file will be read and its 
>>>> contents copied to the clipboard.  When you invoke the plotting command, 
>>>> the data in the clipboard will be plotted, and the graph's title and axis 
>>>> labels will be taken from the *[labels]* section of the node.  The "@" 
>>>> directive prevents the section from being interpreted as code.
>>>> On Monday, November 8, 2021 at 8:10:42 PM UTC-5 [email protected] 
>>>> wrote:
>>>>
>>>>> I have adapted the code for Viewrendered3's new ability to plot data 
>>>>> in nodes, and with minor changes it functions as a stand-alone command to 
>>>>> take data from the clipboard and plot it.  So if you get one- or 
>>>>> two-column 
>>>>> data into the clipboard you can take a quick look at it.
>>>>>
>>>>> Here is an example of X-Y data:
>>>>>
>>>>>     1 1
>>>>>     2 .5
>>>>>     3 -6
>>>>>     # comment
>>>>>     ; comment
>>>>>
>>>>>     4 -16
>>>>>     5 -2
>>>>>     6  5
>>>>>     7  10
>>>>>
>>>>> Non-numeric lines are ignored except for special configuration 
>>>>> sections, so you can copy a large range of data sources and plot them 
>>>>> instantly.  You could also do some computation in a node that you run 
>>>>> with 
>>>>> CTRL-B, and add a few lines to format it and copy it to the clipboard. I 
>>>>> have found that ability to be very useful while I've developed code.  The 
>>>>> script is very flexible and robust (so far as I know, anyway).
>>>>>
>>>>> You do need to install *pyperclip* (for getting the clipboard), and 
>>>>> *matplotlib* to do the actual plotting - you probably have it 
>>>>> installed already. You could change the script to use Leo's own clipboard 
>>>>> code or some other clipboard package;  I just happen to like pyperclip 
>>>>> and 
>>>>> think it's easy to use.
>>>>>
>>>>> As of this evening, the script is in *scripts.leo* in the *devel*  
>>>>> branch, under a new node with the headline *Plots and Graphs*.  More 
>>>>> information and usage details are in the docstring of the script, and the 
>>>>> new *Help for plot-2d* menu item in VR3 is very applicable since the 
>>>>> code is largely the same.
>>>>>
>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/leo-editor/36bac9ec-1e41-4eda-8523-c5c644bef1efn%40googlegroups.com.

Reply via email to