matplotlib--折线图
matplotlib官方文档:https://matplotlib.org/gallery/index.html
折线图:以折线的上升或下降来表示统计数量的增减变化的统计图
特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)
一、matplotlib
是最流行的python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB创建。
用途:
- 能将数据进行可视化,更直观的呈现
- 是数据更加客观,更具说服力
1、创建简单折线图
示例1:
假设一天中每隔两个小时(range(2,26,2))的气温(℃)分别是[15,13,14.5,17,20,25,26,26,27,22,18,15],使用python画图他的折线图
# coding=utf-8 from matplotlib import pyplot as plt # x 轴 x = range(2,26,2) # y 轴 y = [15,13,14.5,17,20,25,26,26,27,22,18,15] # 画出折线图,plot() 方法根据x,y 来画出折线图 plt.plot(x,y) # 显示图片 plt.show()

运行程序展示的折线图如上所示,但是目前存在以下几个问题:
1、设置图片大小(高清、无码、大图)
2、保存到本地
3、描述信息,x轴y轴代表什么,图表示什么
4、调整 x 或 y 轴之间的刻度间距
5、线条的样式(颜色、粗细、透明度等)
6、标记出特殊点
7、添加水印、标识
2、调整图片大小与 X、Y 轴刻度
plt.figure() 方法:设置图片的logo、图片大小、清晰度、颜色
plt.plot(参数1,参数2) 方法:根据传入的参数画图
plt.xticks(参数1) 根据传入的参数设置 X 轴的刻度 参数可以是 range() 函数或 列表
plt.yticks(参数1) 设置y轴刻度
plt.savefig(“保存路径”) 方法 :将图片保存到传入的路径
# coding=utf-8 from matplotlib import pyplot as plt # x 轴 x = range(2,26,2) # y 轴 y = [15,13,14.5,17,20,25,26,26,27,22,18,15] # 设置图片大小 fig = plt.figure(num="BONC",figsize=(12,8), dpi=80) # figure 图形图标的意思,在这里指的是我们画的图 # 通过实例化一个 figure 并且传递参数,能够在后台自动使用 figure 示例 # 在图像模糊的时候可以传入 dpi 参数。让图片更加清晰 # 画出折线图,plot() 方法根据x,y 来画出折线图 plt.plot(x,y) # 设置 X 轴的刻度 plt.xticks(x) # x 轴的刻度为2 # plt.xticks(range(2,25)) # x 轴的刻度为1 #_xticks_label = [ i/2 for i in range(4,49)] # plt.xticks(_xticks_label) # 自己设置 X 轴的刻度,刻度为0.5
# 设置 Y 轴的刻度
plt.yticks(range(min(y),max(y)+1,2))
# 保存 #plt.savefig("E:\PycharmProjects\zheXian.png") # 显示图片 plt.show()

示例2:
如果列表a表示10点到12点的每一分钟的气温,如何绘制折线图观察每分钟气温的变化情况?
# coding=utf-8 import random from matplotlib import pyplot as plt x = range(0,120) y = [random.randint(20,35) for i in range(120)] fig = plt.figure(num="天气气温变化折线图",figsize=(12,8),dpi=60) plt.plot(x,y) # 调整 X 轴的刻度 _xticks_label = ["10点:{}分".format(i) for i in range(60) ] _xticks_label += ["11点:{}分".format(i) for i in range(60) ] # plt.xticks() 函数中,只添加一个参数时,则 X 轴直接展示出来; # 如果 函数中传入了两个参数,则两个参数的长度与刻度必须相同,且一一对应 # rotation 旋转参数,旋转角度 plt.xticks(list(x)[::10],_xticks_label[::10],rotation=45) plt.show()
显示:

图中不能显示出中文名称。因为 matplotlib 中不能显示中文
3、设置显示中文
设置中文有两种方式:
方法一: import matplotlib #windows 和 Liunx 设置字体 #需要导入 import matplotlib font = {'family' : 'MicroSoft YaHei', 'weight' : 'bold', 'size' : 'larger'} matplotlib.rc("font",family='MicroSoft YaHei',weight='bold') 方法二: from matplotlib import font_manager
# windows 和 Liunx 设置字体 方法二,并且需要在设置 X 或 Y 轴时设置时(plt.xticks(),plt.yticks())设置fontproperties属性 #需要导入 from matplotlib import font_manager my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\STXINWEI.TTF") # 添加字体的路径
plt.xticks(list(x)[::10],_xticks_label[::10],rotation=45,fontproperties=my_font) #设置fontproperties属性

4、给图标添加描述信息
my_font1 = font_manager.FontProperties(fname="C:\Windows\Fonts\STXINWEI.TTF",size=30) # 添加字体的路径 # 给图标添加描述信息 plt.xlabel("时间",fontproperties=my_font1) # 设置 X 轴的label plt.ylabel("温度",fontproperties=my_font1) # 设置 Y 轴的label plt.title("温度变化情况",fontproperties=my_font1) # 设置 title

示例3
假设大家在30岁的时候,根据自己的实际情况,统计出来了从11岁到30岁每年交的女(男)朋友的数量如列表a,请绘制出该数据的折线图,以便分析自己每年交女(男)朋友的数量走势
1、显示中文
# 设置显示中文 from matplotlib import font_manager my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\STXINWEI.TTF") my_font1 = font_manager.FontProperties(fname="C:\Windows\Fonts\STXINWEI.TTF",size=18) # 设置 X 轴 、Y 轴 信息 plt.xticks(x, _xticks_labels, fontproperties=my_font) plt.ylabel("单位:个",fontproperties=my_font1) plt.title("交友趋势表",fontproperties=my_font1)
2、设置图例
# 设置图例 plt.legend(prop=my_font,loc=1) # 参数:prop 只有在legen() 中设置中文时才用 prop,其他地方都是使用 fontproperties # 参数:loc # 'best' : 0 自己找一个最合适的位置 # 'upper right' : 1 右上 # 'upper left' : 2 左上 # 'lower left' : 3 左下 # 'lower right' : 4 右下 # 'right' : 5 右边 # 'center left' :6 左中 # 'center right' : 7 右中 # 'lower center' : 8 上中 # 'upper center' : 9 下中 # 'center' : 10 中间
3、绘制折线图
plt.plot(x,y1,label="自己",color='red', linestyle='--', alpha=0.6, linewidth=5 ) plt.plot(x,y2,label='同学',color='orange', linestyle='-',alpha=0.6, linewidth=5)
| 颜色字符 | 风格字符 | 线条粗细 | 透明度 |
| r 红色 | - 实现 | linewidth=5 | alpha=0.5 |
| g 绿色 | -- 虚线 | ||
| b 蓝色 | -. 点划线 | ||
| w 白色 | : 点虚线,虚线 | ||
| ' ' 留空或空格,无线条 | |||
| c 青色 | |||
| m 洋红 | |||
| y 黄色 | |||
| k 黑色 | |||
| #00ff00 16进制 | |||
| 0.8 灰度值字符串 |

浙公网安备 33010602011771号