Python API调用

准备

  1. 软件:安装 OriginPro( 2021b 或更高版本)及 Python 环境。

  2. :命令行执行 pip install originpro pandas

  3. 制作模板:在 Origin 中先手动画好一张图,调整好坐标轴、字体、大小等,右键图表空白处 -> Save Template As,保存为 .otpu 格式文件。

第 1 步:初始化并连接 Origin

在 Python 脚本开头导入库,并设置 Origin 界面是否可见。

1
2
3
4
5
import originpro as op
import pandas as pd

# True=显示Origin界面(方便调试),False=后台静默运行(速度更快)
op.set_show(True)

第 2 步:新建工作簿并导入数据

使用 Pandas 读取本地数据,并在 Origin 中创建 WorkSheet 填入数据。

1
2
3
4
5
6
7
8
# 读取本地数据
df = pd.read_csv("your_data.csv")

# 新建 Origin 工作簿 (lname为工作簿长名称)
wks = op.new_book('w', lname="My_Data_Book")[0]

# 将 Pandas DataFrame 直接写入工作簿
wks.from_df(df)

第 3 步:调用模板生成图表并添加曲线

指定刚才保存的 .otpu 模板路径,创建图表,并将工作簿中的指定列画到图上。

1
2
3
4
5
6
7
8
9
10
11
# 模板的绝对路径
tpl_path = r"D:/path/to/your/template.otpu"

# 基于模板新建图表 (Graph)
graph = op.new_graph(template=tpl_path, lname="My_Plot")

# 添加数据曲线 (wks=工作簿, coly=Y列索引, colx=X列索引, type=图表类型 'line' 或 'scatter')
p_line = graph[0].add_plot(wks, coly=1, colx=0, type='line')

# 强制重新缩放坐标轴以适应数据
graph[0].rescale()

第 4 步:精细控制颜色与图例(进阶)

Origin 的原生 Python API 可以直接控制颜色,而复杂的图例修改可通过底层 LabTalk 脚本指令完成。

1
2
3
4
5
6
7
8
9
10
# 1. 强制指定十六进制颜色
p_line.color = '#FF0000' # 红色

# 2. 修改图例
# 先强制销毁并重置图例 (防止模板自带图例干扰)
graph[0].lt_exec('legend -r;')
# 写入新图例文字 (注意多行使用 r"\r\n" 拼接)
graph[0].lt_exec(r'legend.text$="\l(1) Sample A\r\n\l(2) Sample B";')
# 设置图例为纵向单列排列
graph[0].lt_exec('legend.numcols=1;')

第 5 步:循环批处理与保存工程

将上述 2-4 步放入一个 for 循环中遍历文件夹,最后保存为 .opju 工程文件并退出。

1
2
3
4
5
6
# 保存完整的 Origin 工程文件
op.save(r"D:/path/to/save/My_Auto_Project.opju")

# 安全退出 Origin 进程 (如果是独立 Python 环境运行必须加这句)
if op.oext:
op.exit()

整体逻辑架构模板:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import originpro as op
import pandas as pd
from pathlib import Path

op.set_show(True)

# 1. 寻找数据
data_files = Path("D:/MyData").rglob("*.csv")

# 2. 准备图表
graph = op.new_graph(template=r"D:/Templates/my_temp.otpu", lname="Batch_Plot")

# 3. 循环画图
for idx, file in enumerate(data_files):
df = pd.read_csv(file)
wks = op.new_book('w', lname=f"Data_{idx}")[0]
wks.from_df(df)

# 将每个数据依次添加到同一张图上
p = graph[0].add_plot(wks, coly=1, colx=0, type='line')

graph[0].rescale()
op.save(r"D:/MyData/Result.opju")
if op.oext: op.exit()

快捷键

打出“埃米”:按住ALT,小键盘打“0197”。


本站总访问量次!

本站由 Yantares 使用 Stellar 1.33.1 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

发表了 106 篇文章 · 总计 190.3k 字