人工智能学习笔记02——matplotlib的基础绘图

1 什么是matplotlib

    matplotlib :最流行的python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿matlab构建。

2  为什么要学习matplotlib

    1,能够将数据可视化,更直观的呈现

     2,使数据更加客观,更具说服力

3 matplotlib的基本要点

   假设一天中每隔两个小时的(range(0,24,2))的气温分别是[15,13,14,5,17,20,25,26,27,22,18,15]

#!/usr/bin/python
# -*- coding: utf-8 -*-
from matplotlib import pyplot as plt

x = range(2,26,2) #数据在x轴的位置是一个可迭代的对象
y = [15,13,14,15,17,20,25,26,27,22,18,15]
plt.plot(x,y) #传入x和y 通过plot绘制出折线图
plt.show() #在执行程序的时间 展示图形

  生成图片如下

我们常常需要对图片做一下的处理:

    1 设置图片的大小(想要一个高清无码的大图)

    2 保存到本地

    3 描述信息,比如x轴代表什么,y 轴代表什么,这个图片代表是

    4 调整x轴或者y 轴的刻度的间距

    5 线条的样式(比如,颜色,透明度等)

    6  标记处特殊的点,比如告诉别人最高点最低点在哪里

    7 给图片添加一个水印(防伪,防盗用)

                                                     设置图片大小

#!/usr/bin/python
# -*- coding: utf-8 -*-
from matplotlib import pyplot as plt

fig = plt.figure(figsize=(20,8),dpi=80)
#figure 图形图标的意思,在这里指的是我们所画的图
#通过实例化一个figure,并且传递参数,能够在后台自动使用该figure示例
#在图像模糊的时候,可以传入figure参数,让图片更加清晰
x = range(2,26,2) #数据在x轴的位置是一个可迭代的对象
y = [15,13,14,15,17,20,25,26,27,22,18,15]
plt.plot(x,y) #传入x和y 通过plot绘制出折线图
plt.savefig("./sig_size.png") #保存图片
 #可以保存为svg 这种矢量图格式,放大不会有锯齿
plt.show() #在执行程序的时间 展示图形

                                            设置x轴,y轴的刻度

plt.xticks(x)#设置x轴的刻度
plt.yticks(range(min(y),max(y)+2))#设置y轴的刻度

   如果列表a表示10点到12点每一分钟的气温变化,如何绘制曲线图,观察每分钟的气温变化情况?

#!/usr/bin/python
# -*- coding: utf-8 -*-
from matplotlib import pyplot as plt
import random
fig = plt.figure(figsize=(16,8),dpi=80)
y = [random.randint(20,35) for i in range(120)]
x = range(0,120)
plt.plot(x,y)
#调整x轴的刻度
#_x = list(x)[::10]
#_xtick_labels = ["hello,{}".format(i) for i in _x]

_xtick_labels = [u"10点{}分".format(i) for i in range(60)]
_xtick_labels += [u"11点{}分".format(i) for i in range(60)]
#取步长,数字和字符串一一对应,数据的长度一样,rotation 旋转的角度
plt.xticks(list(x)[::3],_xtick_labels[::3],rotation = 45)
plt.show()

 显示结果如下:

        

                                                   中文显示问题

为什么并不能显示中文:

    matplotlib 默认不支持中文字符。

查看linux/mac下面支持的字体:   

fc-list   查看支持的中文字体
fc-list :lang=zh 查看支持的中文字符(:号前面有空格)

查看windows下面支持到字体:

  到C:\Windows\Fonts 目录下查看

如何修改matplotlib 的默认字体

通过matplotlib下的font_manager可以解决(windows/linux/mac)

#!/usr/bin/python
# -*- coding: utf-8 -*-
from matplotlib import pyplot as plt
import random
import matplotlib
from matplotlib import font_manager

my_font = font_manager.FontProperties(fname = 'C:\Windows\Fonts\msyh.ttc')
fig = plt.figure(figsize=(16,8),dpi=80)
y = [random.randint(20,35) for i in range(120)]
x = range(0,120)
plt.plot(x,y)
#调整x轴的刻度
#_x = list(x)[::10]
#_xtick_labels = ["hello,{}".format(i) for i in _x]

_xtick_labels = [u"10点{}分".format(i) for i in range(60)]
_xtick_labels += [u"11点{}分".format(i) for i in range(60)]
#取步长,数字和字符串一一对应,数据的长度一样,rotation 旋转的角度
plt.xticks(list(x)[::3],_xtick_labels[::3],rotation = 45,fontproperties = my_font)
plt.show()

效果图如下

                                                         描述信息

plt.xlabel(u"时间",fontproperties = my_font)
plt.ylabel(u"温度 单位/℃",fontproperties = my_font)
plt.title(u"10点到12点每分钟气温变化情况",fontproperties = my_font)

效果图如下

假设某人11到30岁交男(女)朋友的个数如列表a,请绘制出直线图,以便分析每年交男(女)朋友数量的走势

    a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]

#!/usr/bin/python
# -*- coding: utf-8 -*-
from matplotlib import pyplot as plt
import random
import matplotlib
from matplotlib import font_manager

my_font = font_manager.FontProperties(fname = 'C:\Windows\Fonts\msyh.ttc')
#设置图片大小
fig = plt.figure(figsize=(16,8),dpi=80)
y = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
x = range(11,31)
plt.plot(x,y)

_xtick_labels = [u"{}岁".format(i) for i in range(11,31)]
plt.xticks(x,_xtick_labels,fontproperties = my_font)
#设置x轴信息
plt.xlabel(u"年龄",fontproperties = my_font)
#设置y轴信息
plt.ylabel(u"个数 单位/个",fontproperties = my_font)
#设置标题
plt.title(u"11岁到30岁交男(女)朋友的个数",fontproperties = my_font)
#设置网格 alpha 透明度
plt.grid(alpha=0.4)
#展示图片
plt.show()

效果图展示如下

                                                 设置图例及线条颜色

#!/usr/bin/python
# -*- coding: utf-8 -*-
from matplotlib import pyplot as plt
import random
import matplotlib
from matplotlib import font_manager

my_font = font_manager.FontProperties(fname = 'C:\Windows\Fonts\msyh.ttc')
#设置图片大小
fig = plt.figure(figsize=(16,8),dpi=80)
y_1 = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
y_2 = [1,0,3,1,2,2,3,2,1,2,2,1,1,1,1,1,1,1,1,1]
x = range(11,31)
plt.plot(x,y_1,label = u"小明",linestyle = ':')
#这里可以设置线条的颜色
# color = 'r' 线条颜色
# linestyle = '-' 线条风格 '-' 实线 '--'虚线破折线 '-.' 点划线 ':' 点虚线,虚线 ''留空或空格,无线条
# linestyle = 5 线条粗细
# alpha = 0.5 线条透明度
plt.plot(x,y_2,label = u"小张")
_xtick_labels = [u"{}岁".format(i) for i in range(11,31)]
plt.xticks(x,_xtick_labels,fontproperties = my_font)
#设置x轴信息
plt.xlabel(u"年龄",fontproperties = my_font)
#设置y轴信息
plt.ylabel(u"个数 单位/个",fontproperties = my_font)
#设置标题
plt.title(u"11岁到30岁交男(女)朋友的个数",fontproperties = my_font)
#设置网格 alpha 透明度
plt.grid(alpha=0.4)
#添加图例
plt.legend(prop = my_font,loc = "upper left")
#展示图片
plt.show()

效果图展示如下

更多示例请参考官网:https://matplotlib.org/gallery/index.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

www.365codemall.com

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

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

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

打赏作者

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

抵扣说明:

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

余额充值