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  灰度值字符串      

 

posted @ 2020-12-02 20:08  wltwxlbgplgd  阅读(304)  评论(0)    收藏  举报