Day04-黑马学习篇(一)matplot画图基本要点

一、为什么要学习matplotlib?

       (1)能够将数据进行可视化。

       (2)使数据更加直观、更具说服力。

二、什么是matplotlib

       底层绘图库,主要做数据可视化图表,名称取材于MATLAB,模仿MATLAB构建

三、Matplotlib基本要点

       1、

      

    (1)红色的点是坐标点,有点无线散点图,有线无点折线图。

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

    (1)如果我们把气温视作y轴坐标,时间视为x轴坐标,两者相应的数据个数必须是一一对应的。

    (2)range函数可以取步长但range不能代替列表,后面会详细讲到。

    (3)在绘图前要准备好两轴的数据(可迭代对象)

       3、matplotlib下有专用的模块pyplot模块帮助绘制图形,导入规则:

    (1)plot函数会帮助我们将数据一一对应,不需要手动去对应(绘制的是折线图),对应前面的那句话:x和y轴数据个数必须一一对应。

    (2)show函数会帮助我们将图形展示出来

       4、matplotlib会自动帮我们设置刻度、图形大小等图形元素,我们可以自己修改

              目前存在问题:

                            (1)设置图片大小(高清无码的大图)

                            (2)保存到本地

                            (3)描述信息,比如x轴和y轴表示什么,这个图的标题是什么

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

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

                            (6)标记出特殊的点(最低点和最高点等)

                            (7)给图片添加水印(防止盗用)

       5、设置图片大小

    (1)调用figure方法,figsize表示设置图片的宽和高,dpi表示每英寸点的个数,调整图片的清晰度

       6、图片的保存

    (1)绘制之后保存,savefig方法设置保存的地址,可以保存为svg矢量图格式,在网页中放大不会产生失真

       7、设置刻度

    (1)xticks()可以设置x的刻度,如果直接传入x,它会将每个x的刻度都传入进去作为x轴,也可以手动传入列表设置刻度(创建列表手动设置步长,在传入列表后还可以二次设置步长)

    (2)yticks()可以设置y的刻度,我们通常将y轴最大值和最小值引入代表最高刻度和最低刻度。

from matplotlib import pyplot as plt

#数据在x轴的位置,是一个可迭代对象
x = range(2,26,2)
#数据在y轴的位置,是一个可迭代的对象.与x轴元素的个数一一对应
y = [15,13,14.5,17,20,25,26,26,24,22,18,15]
#设置图片大小
plt.figure(figsize=(20,8),dpi=80)

#绘制图形
plt.plot(x,y)

#设置x轴刻度
_xtick_labels = [i/2 for i in range(4,49)] #创建列表作为初始刻度
plt.xticks(_xtick_labels[::3]) #二次设置步长规定自己想要的效果
#设置y轴刻度
plt.yticks(range(min(y),max(y)+1))

#保存图片
# plt.savefig("./t1.png")
#展示图形
plt.show()

       8、小测试1:如果列表a表示10点到12点的每一分钟的气温,如何绘制折线图观察每分钟气温的变化情况   a = [random.randint(20,35) for I in range(120)]

       9、优化图像:对于上面的气温变化图像,我们需要将横坐标修改为字符串形式的时间轴。之所以在xticks中传入两个参数是为了让数字和字符串之间形成对应。range函数返回的是一个可迭代对象,但这个对象并非列表,所以要用list()将可迭代对象转化为列表进行对应操作。(注:在没有用到字符串形式的时候不需要考虑,x轴的刻度可以随意规定)

       10、设置中文显示:

    (1)第一种方法(适用于windows、linux):

      

     (2)我采用了一劳永逸的方法,直接修改matplotlib的内置文件

###############第一步###################

将中文字体复制到matplotlib的字体目录中

matplotlib默认安装在 %PythonPath%Libsite-packages 目录下。复制微软雅黑字体到 %PythonPath%Libsite-packagesmatplotlibmpl-datafonts tf 中

###############第一步###################
配置文件matplotlibrc,如下图方式修改即可。

       11、添加描述信息

    (1)x轴标签的添加调用函数xlabel()

    (2)y轴标签的添加调用函数ylabel()

    (3)图标题的添加调用函数titile()

from matplotlib import pyplot as plt
import random
import matplotlib


x = range(0,120)
y = [random.randint(20,35) for i in range(120)]

plt.figure(figsize=(20,8),dpi=80)

plt.plot(x,y)
#设置x轴刻度
_xtick_labels = ["10点{}分".format(i) for i in range(60)]
_xtick_labels += ["11点{}分".format(i) for i in range(60)]
#取步长,数字和字符串一一对应,数据的长度一样
plt.xticks(list(x)[::3],_xtick_labels[::3],rotation=45)
#添加描述信息
plt.xlabel("时间")
plt.ylabel("温度 单位(℃)")
plt.title("10到12点每3分钟的气温变化情况")

plt.show()

       12、小测验2:(图例部分看后面一章节学习后再进行)

      假设大家在30岁的时候,根据自己的实际情况,统计出来了你和你同桌各自从11岁到30岁每年交的女(男)朋友的数量如列表a和b,请在一个图中绘制出该数据的折线图,以便比较自己和同桌20年间的差异,同时分析每年交女(男)朋友的数量走势。

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

      b = [1,0,3,1,2,2,3,3,2,1 ,2,1,1,1,1,1,1,1,1,1]

      要求:

      (1) y轴表示个数。

      (2) x轴表示岁数,比如11岁,12岁等。

      (3) 自定义绘制图形的风格。

      (4) 每条线添加图例。

from matplotlib import pyplot as plt

x = range(11,31)
a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
b = [1,0,3,1,2,2,3,3,2,1 ,2,1,1,1,1,1,1,1,1,1]

plt.figure(figsize=(20,15),dpi=80)
plt.plot(x,a,label='')
plt.plot(x,b,label='你的同桌')

_xtick_labels = [i for i in range(11,31)]

plt.xticks(_xtick_labels)
plt.yticks(range(min(b),max(a)+1))
plt.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3,
       ncol=3, mode="None", borderaxespad=0.)

plt.xlabel("岁数")
plt.ylabel("个数")
plt.title("11岁到30岁每年交的女(男)朋友的数量")
plt.show()

原文地址:https://www.cnblogs.com/MurasameLory-chenyulong/p/14295387.html