python根据csv中的数据,绘制折线图

python根据csv中的数据,绘制折线图,第1张

python根据csv中的数据,绘制折线图

函数功能:读取文件中的几列,绘制折线图,标注x轴标签和y轴标签,表明,曲线最大最小值等。

效果:

 

源码:

#导入库
import csv
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
#文字显示乱码问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['axes.unicode_minus'] = False
#读文件
data = pd.read_csv('E:datamanualprocessData处理后20211127093020.csv')

#读取指定列
xdata = []
y1data = []
y2data = []
xdata = data.loc[:, '时间'] #横坐标 时间是列名
y1data = data.loc[:, '列名1'] #多条曲线的y值 参数名为csv的列名
y2data = data.loc[:, '列名2']
y3data = data.loc[:, '列名5']

# color可自定义折线颜色,marker可自定义点形状,label为折线标注
plt.plot(xdata, y1data, color='r', marker='o', mec='r', mfc='w', label=u'列名1的曲线注释')
plt.plot(xdata, y2data, color='b', marker='*', mec='r', mfc='w', label=u'列名2的曲线注释')
plt.plot(xdata, y2data, color='g', marker='1', mec='r', mfc='w', label=u'列名3的曲线注释')
plt.title(u"表名", size=10)
#其中参数loc用于设置legend的位置,bbox_to_anchor用于在bbox_transform坐标(默认轴坐标)中为图例指定任意位置。
plt.legend(loc=1, bbox_to_anchor=(1.15,1.0),borderaxespad = 0)
plt.xlabel(u'x轴名', size=10)
#设置x轴标签旋转角度和字体大小
plt.xticks(rotation=10, fontsize=8)
plt.ylabel(u'y轴名', size=10)
plt.gca().xaxis.set_major_locator(ticker.MultipleLocator(2))# 设置横坐标间隔(每隔两个横坐标显示一个横坐标,解决横坐标显示重叠问题)

#绘制曲线最大最小值
max_indx=np.argmax(y1data)#找出曲线1的最大值下标
x_max_indx = xdata[max_indx]#最大值对应x轴标签
min_indx=np.argmin(y1data)#最小值下标
#以‘ks’代表的方式,在图上max值位置标记点
plt.plot(max_indx,y1data[max_indx],'ks')
show_max='[最大值:'+str(y1data[max_indx])+']'
#该函数用以在图上标注文字
#plt.annotate(s='str',xy=(x,y) ,xytext=(l1,l2) ,...)
#s:为注释文本内容,xy:为被注释的坐标点,xytext:为注释文字的坐标位置
plt.annotate(show_max,xytext=(max_indx,y1data[max_indx]+1),xy=(max_indx,y1data[max_indx]))
#以‘gs’代表的方式,在图上min值位置标记点
plt.plot(min_indx,y1data[min_indx],'gs')
show_min='[最小值:'+str(y1data[min_indx])+']'
plt.annotate(show_min,xytext=(min_indx-1,y1data[min_indx]+1),xy=(min_indx,y1data[min_indx]))

# text函数第一个参数是x轴坐标,第二个参数是y轴坐标,第三个参数是要显式的内容
# alpha 设置字体的透明度,family 设置字体,size 设置字体的大小,style 设置字体的风格,wight 字体的粗细
# bbox 给字体添加框,alpha 设置框体的透明度, facecolor 设置框体的颜色
plt.text(max_indx,20, "1路最大值:"+str(y1data[max_indx])+"最小值:"+str(y1data[min_indx]), size = 10, alpha = 1)

plt.savefig(r'E:datamanualprocessData处理后20211127093020.jpg')#保存图片

plt.show()

颜色表 

 marker标记风格:

linestyle线条样式

参考

python画图(线条颜色、大小、类型:点、虚线等)(图文详细入门教程四) - 知乎 (zhihu.com)

python matplotlib各种绘图类型完整总结_忆殇D.Rose的博客-CSDN博客

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5624986.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存