python中matplotlib可视化作图
最近做实验,需要重复画图,用origin处理有些繁琐,索性用python自动化处理一下。好在测试数据是简单的格式,不需要特定软件打开,记事本即可。
在文件解析获取数据上,没费什么事,但因为对作图格式有一定要求,所以在图表样式上碰到了一些问题。
官网的文档过于零碎,不适合新手阅读。网上的教程或视频较少,涉及样式的内容就更少,看来看去没有现成的优质教程,都没有对样式进行细致讲解。费了些时间依靠网上零碎的东西集成了今天的这篇文章。
贴出的代码,对作图分析里的要求没有完全实现。不过最后的效果还能接受。
代码实现
'''
作图分析
1、图像X、Y轴比例
2、X、Y轴刻度分布
3、刻度线长度、宽度
4、刻度标签字体大小
5、X、Y轴标签字体大小
6、图例边框去除
7、背景颜色设置
'''
import os
import numpy as np
import matplotlib.pyplot as plt
#从pyplot导入MultipleLocator类,这个类用于设置刻度间隔
from matplotlib.ticker import (MultipleLocator, AutoMinorLocator)
#解决中文显示问题
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
#获取需要处理文件的地址
def getlink():
file_link_lists = []
for file_link in os.listdir():
if ".DTA" == os.path.splitext(file_link)[-1]:
file_link_lists.append(file_link)
return file_link_lists
#根据源文件数据处理,下一步进行绘制
def lsv_data_processing(file_link):
result = [x_RHE[],y[]]
keyword = r"V vs. Ref"
with open(file_link,"r") as f:
switch = 0
for i, line in enumerate(f, 1):
if keyword in line:
switch = 1
continue
if switch:
x_RHE.append(eval(line.split("\t")[3])+0.059*14+0.244)
y.append(eval(line.split("\t")[4])*1000)
f.close()
return result
#设置绘图样式
def draw_style(ax):
#设置坐标轴显示状态
ax.spines['top'].set_visible(True)#开启上坐标轴
ax.spines['bottom'].set_visible(True)#开启x轴坐标轴
ax.spines['left'].set_visible(True)#开启y轴
ax