与matplotlib的斗争之路

一. 读取文件画图篇

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(labelfontdict=Noneloc='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=Nonewhich='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个图形

猜你喜欢

转载自blog.csdn.net/weixin_42280517/article/details/86238809
今日推荐