目录
一. 读取文件画图篇
二. 中文不显示篇
三. 各种标注篇
四. 面向对象篇
五. 补充
1. 怎么批量读csv文件(pandas方法)并画图
import os
import matplotlib.pyplot as plt
import pandas as pd
# 根目录
root_dir = r"D:/xxx/xxx"
# 依次读取根目录下的每一个文件
i = 0
for file in os.listdir(root_dir):
i += 1
# 只读取csv文件
if file.split('.')[-1] == 'CSV':
file_name = root_dir + "/" + file
filein = open(file_name, "r+")
# pandas方法 astype是将类型转化,方便作图
line = pd.read_csv(filein, header=None)[16:].astype('float')
# print(line.head()[0])
plt.subplot(3,5,i)
plt.plot(line[0],line[3],label='V')
plt.plot(line[0],line[1],label='A')
plt.legend(loc='upper left')
plt.title('%d' %i)
plt.show()
1. 为啥我的中文是方框
因为matplotlib库的配置信息里面没有中文字体的相关信息
请在最开头写上
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei'] # 一般只要这一行就可以
1. title
plt.title(label, fontdict=None, loc='center', pad=None, **kwargs)
plt.title('Center Title')
plt.title('Left Title', loc='left')
plt.title('Right Title', loc='right')
2. legend
fig, ax = plt.subplots()
ax.plot(a, c, 'k--', label='Model length')
ax.plot(a, d, 'k:', label='Data length')
ax.plot(a, c + d, 'k', label='Total message length')
legend = ax.legend(loc='upper center', shadow=True, fontsize='x-large')
# Put a nicer background color on the legend.
legend.get_frame().set_facecolor('C0')
3. label
plt.xlabel('time')
plt.ylabel('my overall health')
3. grid
plt.grid(b=None, which='major', axis='both', **kwargs)
plt.grid(color='r', linestyle='-', linewidth=2)
4. linestyle
A,=plt.plot(x1,y1,'-r',label='A',linewidth=5.0,ms=10)
线条粗细使用linewidth设置,对应线条上的marker大小设置为ms参数。因为有时候粗线条,所以对应marker大小也需要增加。
如果想要标记marker为空心,可以在后面加上 markerfacecolor='none'
Matplotlib中的两种绘图API说明
Pyplot封装了底层的绘图函数提供了一种绘图环境,使得我们可以直接像在MATLAB那样绘制图形。当我们使用import matplotlib.pyplot as plt语句导入pyplot模块,并使用plt.plot()绘制图形的时候,默认的Figure以及Axes等对象会自动创建以支持图形的绘制。Pyplot一来使得对MATLAB绘图熟悉的童鞋更加容易上手,二来屏蔽了一些底层通用的绘图对象的创建细节,使用更加简洁。
在使用面向对象的编程接口时候,我们需要自己创建画布(FigureCanvas),自己创建图对象(Figure),自己创建Axes(一个Figure可以包含一个或者多个Axes,一个Axes可以理解为一个子图,使用一次plot()绘图函数便会创建一个Axes),所有对象一起才能完成一次完整的绘图。使用面向对象编程接口有利于我们对于图形绘制的完整控制,但是相对于Pyplot接口可能需要书写更多的代码。
matplotlib命令与格式:图像(figure)与子区域(axes)布局与规划
本文总结了 Matplotlib 以及 Seaborn 用的最多的50个图形