2020-02-22 | 技术 Python | 4 min read

此文章发表于 693 天前,请注意文章时效

今天整理python的一些剪藏的资料时候,发现很多是关于matplotlib的内容,索性把所有的内容整理学习一下,省得后面放下又不知道什么时候能学得着。

需求分析

matplotlib作图可能主要替代掉的功能就是Origin作图。平时自己的实验数据主要是使用Origin来处理,其实并没有感觉到Origin有什么缺陷需要替代(毕竟是业界大牌付费软件),但是既然在学习python,并且需要整理相关的笔记,那就只要以Origin为标杆,用matplotlib来实现origin可以实现的功能。

  1. 折线图,柱形图,误差图
  2. 轴,框,标签可以自定义(颜色,大小,位置)
  3. 图片尺寸,格式能够自定义
  4. 对于一些数据可以实现简单的拟合
  5. 一定程度的自动化

这样其实就基本上可以替代Origin的作图功能,以这5点作为核心需求,用matplotlib来实现。

工具准备

在使用Python作图时,主要使用到三个库:pandas, matplotlib, numpy 这三个库分别的作用是:

pandas: 实现文件读取,一定程度上的数据处理
matplotlib:作图的核心模块
numpy:数学处理模块

工作流程

模块导入

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
#导入模块应该就不用说了吧……

数据读取

读入数据的方式有很多种,不一定非得是这里使用的pandas处理csv的方式,采用这种方式主要是因为这种方式最适合我。

df=pd.read_csv('data.csv')
x_ticklabel=df['Sample']
y_height=df['Fracture']
dy_error=df['error']
#按照数据内容,读入数据

作图

读取数据结束之后当然就是作图了,简单的一个作图代码如下面这样:

plt.rcParams['axes.labelsize']=16
plt.rcParams['xtick.labelsize']=14
plt.rcParams['ytick.labelsize']=14
plt.rcParams['legend.fontsize']=12
plt.rcParams['figure.figsize']=[8,6]
#图片的一些设置,字体大小,图片大小比例
plt.style.use('seaborn-ticks') #使用预设的主题,非必需,可以自己定制自己的样式
fig=plt.figure()
ax1=fig.add_subplot(111)
x_bar=np.arange(5) #定义X轴范围
y_tick=np.arange(0,5,0.5) #定义Y轴范围,及最小刻度
ax1.errorbar(x_bar,y_height,yerr=dy_error,fmt='-D',ecolor='r',capsize=4)
#绘制误差图
ax1.set_xticks(x_bar)
ax1.set_xticklabels(x_ticklabel)
#设置X轴及标签
ax1.set_yticks(y_tick)
#设置Y轴及标签
ax1.set_ylabel('Fracture toughness (${MPa\cdot m^{1/2}}$)')
ax1.set_xlabel('GO additon (Vol%)')
#设置X,Y轴标题
ax1.grid(False)
#取消风格
plt.savefig('Fracture-toughness-2.pdf',bbox_inches='tight',dpi=300)
#保存图片
plt.show()
#显示图片

代码分析


引入库之后,就是对图片对象的一些属性设置,例如轴标签字体,tick标签字体,图例字体,图片大小(单位是英吋)。

之后就是设定XY轴的范围,设置完范围之后,设置XY 轴的tick标签。这样一样有标签有坐标的图就已经生成好。再然后就是对曲线进行设置,选择曲线的类型,线的线型,颜色,线宽。

其实到这里就已经生成好图片了。但是我们生成的图片需要保存,那还需要再设置保存图片的格式和分辨率。至此完成图片输出。

最终实现

本文链接:https://willisfusu.github.io/post/python-matplotlib-1/

此文章由李二先生采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可,转载请注明出处。

🎉🎉🎉 我开通了Newsletter,欢迎订阅! 🎉🎉🎉