The Origin Forum
File Exchange
Try Origin for Free
The Origin Forum
Home | Profile | Register | Active Topics | Members | Search | FAQ | Send File to Tech support
Username:
Password:
Save Password
Forgot your Password? | Admin Options

 All Forums
 Origin Forum for Programming
 Forum for Origin C
 Plotting in Origin with Python
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic Lock Topic Edit Topic Delete Topic New Topic Reply to Topic

ryuutakenaka

USA
3 Posts

Posted - 10/27/2014 :  11:05:09 PM  Show Profile  Edit Topic  Reply with Quote  View user's IP address  Delete Topic
Origin Ver. and Service Release : 8.0
Operating System: Win 8

Hi,

Is there an easy way to plot data in Origin with Python? I managed to connect to Origin through COM module, by following this guide:

http://ocwiki.originlab.com/index.php?title=OriginCOM:Application-PutWorksheet

It's working fine but now I also need to make a simple line plot of the data from the worksheet, set some axes titles, scale, etc. I can't find any information on how to do this in Python. Can anyone help?

Thank you,
Ryuu

ZanHUNG

20 Posts

Posted - 10/28/2014 :  03:22:13 AM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
quote:
Originally posted by ryuutakenaka

Origin Ver. and Service Release : 8.0
Operating System: Win 8

Hi,

Is there an easy way to plot data in Origin with Python? I managed to connect to Origin through COM module, by following this guide:

http://ocwiki.originlab.com/index.php?title=OriginCOM:Application-PutWorksheet

It's working fine but now I also need to make a simple line plot of the data from the worksheet, set some axes titles, scale, etc. I can't find any information on how to do this in Python. Can anyone help?

Thank you,
Ryuu



Both Python 2.7 and Python 3.3 have been embedded in Origin 2015 just released a few hours ago....

There are examples about plotting, though not in Python, in http://ocwiki.originlab.com/index.php?title=OriginCOM:Plotting

After sending data to worksheet, you may create a DataRange before plotting like this:

wks = origin.FindWorksheet(pageName)
dr = wks.NewDataRange
dr.Add("X", wks, 0, 0, -1, 0)
dr.Add("Y", wks, 0, 1, -1, 0)

And, of course, a GaphLayer as well:
gpname = origin.CreatePage(3, "PyGaph", "otp4py")


Now you can add DataPlot to it:
gl = origin.FindGraphLayer(gpname)
gl.DataPlots.Add(dr, 200)

"200" means a line plot. See http://ocwiki.originlab.com/index.php?title=OriginCOM:PLOTTYPES for more.

About format setting (axes titles, scales, etc.), you can do this either by Graph Template or LabTalk script:

1. See the "otp4py" in red above, it's the name of a graph template saved before. You don't have to bother about format setting so long as it can be pre-defined.
http://www.originlab.com/doc/Origin-Help/Plot-Graph-Template

2. If you know some LabTalk, then have a try of Execute(). For example, to change the y scale from -2 to 2:
origin.Execute("y1 = -2; y2 = 2;", gpname)

To change X title:
origin.Execute("label -xb X Title;", gpname)


http://ocwiki.originlab.com/index.php?title=OriginCOM:Application-Execute
http://www.originlab.com/doc/LabTalk/ref/Label-cmd
http://www.originlab.com/doc/LabTalk/ref/Layer-Axis-obj

Go to Top of Page

ryuutakenaka

USA
3 Posts

Posted - 10/28/2014 :  12:50:26 PM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
Thank you very much for your extensive reply! I was unable to set DataRange before. Also, LabTalk will be useful, as I want to make multiple graphs with different, dynamically assigned axes scale.

Here's my minimal working example if anyone wants to use it in future (working in Python 3.4.2):

import random # for creating random data
import win32com.client # COM module for communication with Origin

# Connect to Origin
origin = win32com.client.Dispatch("Origin.ApplicationSI") 
origin.visible = 1 # Make Origin window visible

# Create a new workbook named "Python" using the "origin" template
pageName = origin.CreatePage(2, "Python", "origin")

# Put the X and Y data into the worksheet
xData = range(0, 101, 2)
yData = [random.random() for x in xData]
origin.PutWorksheet(pageName, xData, 0, 0) # row 0, col 0
origin.PutWorksheet(pageName, yData, 0, 1) # row 0, col 1

# Create a Data Range
wks = origin.FindWorksheet(pageName)
dr = wks.NewDataRange
dr.Add("X", wks, 0, 0, -1, 0)
dr.Add("Y", wks, 0, 1, -1, 1)

# Create a Graph Layer
gpname = origin.CreatePage(3, "PyGraph", "otp4py")

# Add Data Plot to Graph Layer
gl = origin.FindGraphLayer(gpname)
gl.DataPlots.Add(dr, 200)

# Manipulate format settings (if Graph Template "otp4py" is unavailable)
origin.Execute("y1 = -2; y2 = 2;", gpname) # set y scale from -2 to 2
origin.Execute("x1 = 0; x2 = 100;", gpname) # set x scale from 0 to 100
origin.Execute("label -xb X Title;", gpname) # set x axis title to "X Title"
origin.Execute("label -yb Y Title;", gpname) # set y axis title to "Y Title"

# Clear all variables
import sys
sys.modules[__name__].__dict__.clear()


I need to clear all variables at the end, otherwise it won't let me close Origin saying that "another application is controlling Origin"

Topic resolved and can be closed.
Go to Top of Page

ryuutakenaka

USA
3 Posts

Posted - 10/28/2014 :  4:59:38 PM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
Another question... Now I'm trying to make a folder inside my Origin project with the code, adapted from VB example available here:
http://ocwiki.originlab.com/index.php?title=OriginCOM:Folders-FolderFromPath#VB

The simple code:
import win32com.client 

origin = win32com.client.Dispatch("Origin.ApplicationSI") 
origin.visible = 1

fldr = origin.RootFolder.Folders
fldr.Add("sample folder")

is giving me a "pywintypes.com_error: (-2147352573, 'Member not found.', None, None)"

What am I doing wrong?
Go to Top of Page

ZanHUNG

20 Posts

Posted - 10/28/2014 :  11:29:39 PM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
quote:
Originally posted by ryuutakenaka

Another question... Now I'm trying to make a folder inside my Origin project with the code, adapted from VB example available here:
http://ocwiki.originlab.com/index.php?title=OriginCOM:Folders-FolderFromPath#VB

The simple code:
import win32com.client 

origin = win32com.client.Dispatch("Origin.ApplicationSI") 
origin.visible = 1

fldr = origin.RootFolder.Folders
fldr.Add("sample folder")

is giving me a "pywintypes.com_error: (-2147352573, 'Member not found.', None, None)"

What am I doing wrong?



That works in VB. In Python, the code should be
fldr = origin.RootFolder.Folders.Add
fldr.Name = "sample folder"

or simply
origin.RootFolder.Folders.Add.Name = "sample folder"
Go to Top of Page

VladGets1

Germany
12 Posts

Posted - 11/04/2016 :  09:24:25 AM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
quote:
Originally posted by ryuutakenaka

Origin Ver. and Service Release : 8.0
Operating System: Win 8

Hi,

Is there an easy way to plot data in Origin with Python? I managed to connect to Origin through COM module, by following this guide:

http://ocwiki.originlab.com/index.php?title=OriginCOM:Application-PutWorksheet

It's working fine but now I also need to make a simple line plot of the data from the worksheet, set some axes titles, scale, etc. I can't find any information on how to do this in Python. Can anyone help?

Thank you,
Ryuu



I advise you to read the blog about Python http://djangostars.com/blog/python-in-a-1000-words/
Go to Top of Page
  Previous Topic Topic Next Topic Lock Topic Edit Topic Delete Topic New Topic Reply to Topic
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
The Origin Forum © 2020 Originlab Corporation Go To Top Of Page
Snitz Forums 2000