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

1、为何要学习matplotlib?linux

       (1)可以将数据进行可视化。windows

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

2、什么是matplotlibsvg

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

3、Matplotlib基本要点学习

       一、测试

      

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

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

    (1)若是咱们把气温视做y轴坐标,时间视为x轴坐标,二者相应的数据个数必须是一一对应的。spa

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

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

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

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

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

       四、matplotlib会自动帮咱们设置刻度、图形大小等图形元素,咱们能够本身修改

              目前存在问题:

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

                            (2)保存到本地

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

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

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

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

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

       五、设置图片大小

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

       六、图片的保存

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

       七、设置刻度

    (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()

 

 

 

 

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

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

       十、设置中文显示:

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

      

 

 

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

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

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

matplotlib默认安装在 %PythonPath%\Lib\site-packages 目录下。复制微软雅黑字体到 %PythonPath%\Lib\site-packages\matplotlib\mpl-data\fonts\ttf\ 中

 

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

 

       十一、添加描述信息

    (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()

 

 

 

       十二、小测验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()

相关文章
相关标签/搜索