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:\data\manual\processData\处理后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:\data\manual\processData\处理后20211127093020.jpg')#保存图片

plt.show()

颜色表 

preview

 marker标记风格:

linestyle线条样式

参考

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

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

  • 0
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白日梦想家_胖七七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值