python xps_Python绘制XPS分峰后的填充效果
之前的XPS分峰之后用origin的积分功能来进行填充,不过我的origin2015似乎没有这个功能,装了origin2018才可以进行填充。简单步骤就是选中一条线(此时线是independent的),在origin的快捷分析里有“积分”功能,点击后,会弹出一个对话框 (Fig. 1),在“积分”栏里勾选“关闭快捷分析工具后保持阴影颜色”。然后点击“基线” 功能(Fig. 2),模式为“使用现有数据集”,选择你的基线那一列数据。之后就是拉伸积分区域,确保所有区域都被覆盖到。此时关闭对话框,双击目前的灰色区域,在弹出的对话框中修改积分区域的颜色(默认灰色)。Fig. 1. 确保关闭后积分区域有颜色
Fig. 2. 选择基线
此方法虽然有效,然而对于很多origin版本不够的同学没那么友好,而且有些同学用的是非Windows系统,比如Linux系统,更是对画图带来诸多不便。因此,琢磨了一下用python的matplotlib来画这种图形。此方法应该不是最简便的方法,较为简单粗暴,hhhh。
代码如下:
# -*- coding: utf-8 -*-
"""
Created on Thu Nov 26 21:53:15 2020
@author: fan
"""
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df0 = pd.read_csv('F:/xpstest.csv',header=None) #数据存在csv中,读取该csv文件
print(df0.head())
df_name = locals()
for i in range(1,11): #本例有10组数据,实际情况根据需要进行修改。for语句最后有冒号 :
df_name['df'+str(i)] = pd.read_csv('F:/xpstest.csv',header=None,usecols=[i-1]) #csv默认第一列为column 0,df1需要对应column 0,因此usecols=[i-1]. 注意for循环后一句需要有缩进
print (df_name['df'+str(i)].head()) #验证一下是否创建好10个dataframe,可以mute.此行缩进,表示同样处于for循环
X0=np.array(df_name['df1']) #dataframe转为一列array,下同
Y01=np.array(df_name['df2'])
Y02=np.array(df_name['df3'])
Y03=np.array(df_name['df4'])
Y04=np.array(df_name['df5'])
Y05=np.array(df_name['df6'])
Y06=np.array(df_name['df7'])
Y07=np.array(df_name['df8'])
Y08=np.array(df_name['df9'])
Y09=np.array(df_name['df10'])
X = X0[:,0] #转置,下同
Y1 = Y01[:,0]
Y2 = Y02[:,0]
Y3 = Y03[:,0]
Y4 = Y04[:,0]
Y5 = Y05[:,0]
Y6 = Y06[:,0]
Y7 = Y07[:,0]
Y8 = Y08[:,0]
Y9 = Y09[:,0]
fig, ax = plt.subplots()
ax.invert_xaxis()
plt.xlim(808, 775) #set X range
ax.plot(X, Y1, X, Y8, X, Y9, color='dimgray',linewidth=0.5) #本例,Y1是原始xps值,Y8为基线,Y9为envelope,这些要画成line。实际运用要分清哪个Y值对应的是原始,基线和envelope
ax.plot(X, Y2, X, Y3, X, Y4, X, Y5, X, Y6, X, Y7, color='none',linewidth=0.5) #这些曲线下都要填充颜色,如果有线条会显得不够好看,所以单独画
ax.fill_between(X, Y2, Y8, facecolor='#9ad3bc',alpha=0.6) #填充颜色在Y2和Y8(基线)之间,下同。alpha为透明度,1为不透明,可根据需要调整
ax.fill_between(X, Y3, Y8, facecolor='red')
ax.fill_between(X, Y4, Y8, facecolor='lightcoral',alpha=0.6)
ax.fill_between(X, Y5, Y8, facecolor='cornflowerblue',alpha=0.6)
ax.fill_between(X, Y6, Y8, facecolor='#ffdd93',alpha=0.8)
ax.fill_between(X, Y7, Y8, facecolor='#ffa36c',alpha=0.6)
plt.xlabel('Binding energy (eV)', fontdict={'family' : 'Arial', 'size' : 16}) #X label 字体设置
plt.ylabel('Counts (s)', fontdict={'family' : 'Arial', 'size' : 16}) #Y label 字体设置
plt.xticks(fontproperties = 'Arial', size = 12) #X轴 字体设置
plt.yticks(fontproperties = 'Arial', size = 12) #Y轴 字体设置
plt.show()
fig.savefig('XPS-Co1.tif',dpi=600,format='tif') #保存图片,如需要矢量图可改为eps
fig.savefig('XPS-Co1.png',dpi=600,format='png') #保存图片,如需要矢量图可改为eps
print('done!')
画图结果(局部)原始值,基线,envelope有line color,填充区域只填充了颜色,去掉了line color
横坐标效果
python xps_Python绘制XPS分峰后的填充效果相关推荐
- python绘制XPS分峰后的填充效果
使用origin进行填充 之前的XPS分峰之后用origin的积分功能来进行填充,不过我的origin2015似乎没有这个功能,装了origin2018才可以进行填充.简单步骤就是选中一条线(此时线是 ...
- xpspeak安装教程_查漏补缺:教你正确操作 XPS 分峰软件 XPSPEAK(附下载链接)
原标题:查漏补缺:教你正确操作 XPS 分峰软件 XPSPEAK(附下载链接) 一.引言 X射线光电子能谱(XPS):利用X射线辐射样品,使原子或分子的内层电子或价电子受激发射出来,光子激发出来的电子 ...
- xpspeak安装教程_查漏补缺:教你正确操作 XPS 分峰软件 XPSPEAK
一.引言 X射线光电子能谱(XPS):利用X射线辐射样品,使原子或分子的内层电子或价电子受激发射出来,光子激发出来的电子称为光电子,利用能量分析器分析光电子的能量,作出光电子能谱图,横坐标一般为结合能 ...
- xpspeak安装教程_【技术专栏】查漏补缺:教你正确操作 XPS 分峰软件 XPSPEAK(附下载链接)...
一.引言 X射线光电子能谱(XPS):利用X射线辐射样品,使原子或分子的内层电子或价电子受激发射出来,光子激发出来的电子称为光电子,利用能量分析器分析光电子的能量,作出光电子能谱图,横坐标一般为结合能 ...
- xps测试图谱分析软件,[转载]XPS数据分析方法及分峰软件
定性分析 首先扫描全谱,由于荷电存在使结合能升高,因此要通过C结合能289.6eV对全谱进行荷电校正,然后对感兴趣的元素扫描高分辨谱,将所得结果与标准图谱对照,由结合能确定元素种类,由化学位移确定元素 ...
- Origin绘图教程:峰处理之多峰寻找与分峰
接上一期(Origin绘图教程:峰处理之基线的确定与扣除),我们选择扣除基线后得到的数据作图. 首先,还是老规矩,Peak and baseline→Peak Analyzer→Open Dialog ...
- XPS测试分峰的基础操作
XPS测试分峰操作的基本步骤 1. 将所拷贝数据转换成txt格式:把所需拟合元素的结合能和峰强两列数据复制到一空的记事本文档中,并保存. 2. 打开XPS Peak,引入数据:点Data--Impor ...
- xps数据怎么导出为txt_XPS原始数据处理(含分峰拟合)
本文首发于微信公众号研之成理(ID:rationalscience),欢迎关注和扩散! 前言: 前面两期我们对XPS的基本原理,XPS谱线类型等进行了分享.今天咱们更进一步,从测试中得到的原始数据开始 ...
- Python matplotlib绘制雷达图
Python matplotlib绘制雷达图 本篇文章介绍使用matplotlib绘制雷达图. 雷达图也被称为网络图,蜘蛛图,星图,蜘蛛网图,是一个不规则的多边形.雷达图可以形象地展示相同事物的多维指 ...
最新文章
- 【VB】学生信息管理系统4——数据库的发展
- 使用CEfSharp之旅(7)CEFSharp 拦截 http 请求 websocket 内容
- js_高级_表格排序案例---分别用面向过程和面向对象实现
- nginx lua redis 访问频率限制(转)
- 思科高级路由与交换(CISCO 部分) 第5天
- Bootstrap系列 -- 38. 基础导航条
- js中怎么为同级元素添加点击事件
- iOS-Hello World
- 用VLC读取摄像头产生RTSP流,DSS侦听并转发(二)
- Javascript 获取字符串字节数的多种方法
- C++开发者都应该使用的10个C++11特性
- JFreeChart API文档
- shell获取命令返回结果前多少行(n行)
- 5g信号频率是多少赫兹_5G的网速为什么那么快?这得从一个简单的公式说起
- Vue.js的虚拟dom
- 又找到一个免费的ASP.net2.0免费空间,支持MS Sql Server Express2005 及Ftp
- MySQL — 创建表,插入数据,更新数据,删除数据
- 成绩管理系统代码c语言,学生成绩管理系统(c语言源代码)
- 奥维互动地图如何删除标签_奥维互动地图浏览器标签附件添加设置方法
- Android 应用开发---TextView(文本框)详解