Matplotlib之pyplot常用操作(一)
来源:互联网 发布:win10 linux安装教程 编辑:程序博客网 时间:2024/06/07 14:40
做机器学习方向首先得学会点Matplotlib库的知识吧,所以我就在这做一下学习笔记,记录一下我在机器学习方向上所用到的Matplotlib上的知识。
官方文档:网址http://matplotlib.org/api/pyplot_api.html#matplotlib后面加.函数()
便可查询。
一、折线图的绘制
先上一个样例代码:
import matplotlib.pyplot as pltplt.plot()plt.show()
输出结果:
这样我们就画了一个空白的图像。
然后我们再尝试着加入数据,画二维坐标图首先需要一组二维数对(x, y),这里我随便找了一组数据作为折线图的x轴和y轴:
x_axis = [794.28818799999999, 808.50958700000001, 826.25461900000005, 833.53230499999995, 841.97451199999989, 846.94015999999999, 851.69061199999987, 861.97213299999999, 874.92434100000003, 888.51824600000009]y_axis = [79.877565000000004, 99.524317000000011, 62.525946999999995, 57.281737, 52.371316, 70.615566000000001, 47.351207000000002, 43.719923000000001, 40.642712000000003, 38.535789000000001]
然后使用plt.plot()绘制折线图:
plt.plot(x_axis, y_axis)plt.show()
输出结果如下:
接下来我们进一步对图像进行细节处理:
plt.plot(x_axis, y_axis)plt.xticks(rotation = 45) #加入这条代码plt.show()
输出结果(注意x轴坐标的变化,数字倾斜了45°):
这样一来,如果遇到x轴位数过长以至于重叠的时候,斜着画x轴的方法就派上用场了。当然了,同理把xticks
换成yticks
就是改变y轴坐标的倾斜度了。
接下来我们再给这个图像加上“轴的说明”和一个“标题”。
代码如下:
plt.plot(x_axis, y_axis)plt.xticks(rotation = 45)#新加入的代码如下:plt.xlabel("this is x_axis")plt.ylabel("this is y_axis")plt.title("this is title")plt.show()
输出结果:
这样,我们就添加了x坐标轴和y坐标轴的含义以及这个图像的意义。
那么如果我想在同一个图中同时画两条折线呢?那就写plt.plot()两次呗。
既然是两条线,那就肯定再需要一组数据,这里我们就在前面的数据上每个y坐标轴值+1
获得一组新数据,代码如下:
#再构造一组数据x1_axis = x_axis.copy()y1_axis = []for i in y_axis: y1_axis.append(i+10)
有了数据就可以画图了,代码如下:
plt.plot(x_axis, y_axis, c = "r", label = "red")plt.plot(x1_axis, y1_axis, c = "b", label = "red")plt.legend(loc = "best")plt.show()
输出结果:
下面我们来解释以下,新增的代码含义。
- 首先是
plt.plot()
中的参数c
,这个是用来选择曲线颜色的,比如”r”表示”red”, “b”表示”blue”等等; - 其次是参数
label
,表示的是这条曲线的含义,就是上图中右上角那个小框框里面的解释; - 最后是函数
plt.legend(loc = "best")
就是用来表示这个小框框应该放在哪里,里面的参数loc
的值可以是'best', 'upper right', 'upper left', 'lower left', 'lower right', 'right','center left', 'center right', 'lower center', 'upper center', 'center'
,分别表示“最好位置”,“右上角”,“左上角”等等。
总结,以上全部的常用操作代码列举如下:
import matplotlib.pyplot as plt#构造数据x_axis = [794.28818799999999, 808.50958700000001, 826.25461900000005, 833.53230499999995, 841.97451199999989, 846.94015999999999, 851.69061199999987, 861.97213299999999, 874.92434100000003, 888.51824600000009]y_axis = [79.877565000000004, 99.524317000000011, 62.525946999999995, 57.281737, 52.371316, 70.615566000000001, 47.351207000000002, 43.719923000000001, 40.642712000000003, 38.535789000000001]#再构造一组数据x1_axis = x_axis.copy()y1_axis = []for i in y_axis: y1_axis.append(i+10)#绘图plt.plot(x_axis, y_axis, c = "r", label = "red")plt.plot(x1_axis, y1_axis, c = "b", label = "red")plt.xticks(rotation = 45)plt.xlabel("this is x_axis")plt.ylabel("this is y_axis")plt.title("this is title")plt.legend(loc = "best")plt.show()
输出结果:
二、子图操作
有时候我们会在一个区域中画很多个子图,这就需要我们用到子图操作了。
废话不多说,先上代码:
import matplotlib.pyplot as pltfig = plt.figure()ax1 = fig.add_subplot(2,2,1)ax2 = fig.add_subplot(2,2,2)ax4 = fig.add_subplot(2,2,4)plt.show()
输出结果:
解释一下上面的代码,首先我们用函数plt.figure()
创建了一个区域的对象;然后我们又用函数fig.add_subplot()
在这个区域里建了三个子图,至于函数fig.add_subplot()
中的三个参数是什么意思,我这里用一张图来说明就够了:
下面我们再进一步对上面的图像做一下进阶处理:
代码如下:
fig = plt.figure(figsize=(16,8))ax1 = fig.add_subplot(2,2,1)ax2 = fig.add_subplot(2,2,2)ax3 = fig.add_subplot(2,2,4)#下面对子图1和子图2填充了数据ax1.plot(x_axis, y_axis)ax2.plot(x_axis, y_axis)plt.show()
输出结果:
明显可以看到,这张图像比上面那张宽了很多,高了也很多。plt.figure(figsize=(16,8))
函数中的figsize
参数就表示了这个区域的长和宽。
三、条形图
条形图也就是柱状图、bar形图。
plt.bar(left, height, width=0.8, bottom=None, hold=None, data=None, **kwargs)
常用参数:
left:每个柱x轴左边界;
bottom:每个柱y轴下边界;
height:柱高度(Y轴方向);
width:柱宽度(X轴方向) ;
注意:以上参数可以设置为数值或者list,但要保证如果为list, len(list)要一致
具体的操作可以看一下这篇博客,写得不错:http://blog.sina.com.cn/s/blog_b09d4602010194wy.html
如图,我们最终要画一个这样的条形图:
首先,画条形图主要需要两组数据:
- bar的高度值;
- bar的位置。
所谓的高度值就是指每个bar的y坐标轴对应的值,bar的位置就是指x坐标轴对应的值了。
我们先构造出这两组数据:
from numpy import arangebar_heights = [2,3,6,1,7,8]bar_positions = arange(6)+1 #等价于array([1, 2, 3, 4, 5, 6])
然后绘制bar形图:
import matplotlib.pyplot as pltplt.bar(bar_positions, bar_heights, 0.3) #这里的第三个参数0.3的意思是bar的粗细plt.show()
输出结果:
由上面可知,条形图的画法和折线图是相似的,只须把plot
换成bar
就行。
下面我们用画子图的方法改进一下代码,代码如下:
fig, ax = plt.subplots()ax.bar(bar_positions, bar_heights, 0.5)plt.show()
输出结果:
接下来我们继续进行图像的进阶操作,代码如下:
num_cols = ["first_bar", "second_bar", "third_bar", "forth_bar", "fifth_bar", "sixth_bar"]fig, ax = plt.subplots()ax.bar(bar_positions, bar_heights, 0.5)#为每条bar写明含义ax.set_xticks(range(1,7))ax.set_xticklabels(num_cols, rotation = 45)ax.set_xlabel("this is x_axis")ax.set_ylabel("this is y_axis")ax.set_title("this is title")plt.show()
输出结果:
还有一种条形图,是横着画的,如下图:
代码部分呢,其实跟上面的代码类似,只是把函数ax.bar()
换成了ax.bar()
和把每个bar的含义从x坐标轴转到了y坐标轴。
代码如下:
#直观起见,这里把“高”换成“宽”bar_widths = bar_heights.copy()fig, ax = plt.subplots()ax.barh(bar_positions, bar_widths, 0.5)#这里把函数ax.bar()换成了ax.bar()#下面在y坐标轴上说明每条bar的含义ax.set_yticks(range(1,7))ax.set_yticklabels(num_cols, rotation = 45)ax.set_xlabel("this is x_axis")ax.set_ylabel("this is y_axis")ax.set_title("this is title")plt.show()
四、散点图
画散点图和折线图差不多,只是把函数plot
换成函数scatter()
,当然了,散点图也能进行子图操作等等。
首先我们先画一个简单的散点图,继续使用上面的数据x_axis和y_axis:
#构造数据x_axis = [794.28818799999999, 808.50958700000001, 826.25461900000005, 833.53230499999995, 841.97451199999989, 846.94015999999999, 851.69061199999987, 861.97213299999999, 874.92434100000003, 888.51824600000009]y_axis = [79.877565000000004, 99.524317000000011, 62.525946999999995, 57.281737, 52.371316, 70.615566000000001, 47.351207000000002, 43.719923000000001, 40.642712000000003, 38.535789000000001]
然后开始绘制图像:
import matplotlib.pyplot as pltplt.scatter(x_axis, y_axis)plt.show()
输出结果:
进阶操作:
import matplotlib.pyplot as pltplt.scatter(x_axis, y_axis, marker='x', c='r', label = "red")plt.xlabel("this is x_axis")plt.ylabel("this is y_axis")plt.title("this is title")plt.xticks(rotation = 45)plt.legend(loc = "upper right")plt.show()
输出结果:
- Matplotlib之pyplot常用操作(一)
- Matplotlib.pyplot 常用方法(一)
- matplotlib.pyplot基础(一)
- Matplotlib.pyplot 常用方法(二)
- 常用matplotlib.pyplot画图系列(组)
- matplotlib入门之Pyplot
- python之Matplotlib.pyplot
- scikit-learn:matplotlib.pyplot常用画图功能总结(1)
- matplotlib(一)——pyplot使用简介
- matplotlib(一)——pyplot使用简介
- matplotlib(一)——pyplot使用简介
- python学习之(8)简单绘图matplotlib.pyplot
- matplotlib.pyplot
- matplotlib.pyplot
- scikit-learn:matplotlib.pyplot常用画图功能总结(2)——多子图绘制
- matplotlib之pyplot中ylabel和xlabel方法详解
- python matplotlib.pyplot importerror
- 【python】matplotlib.pyplot介绍
- JMS(一):JMS基础;一个JMS例子
- 一文入门百度天工IOT平台
- python-多态、类属性、类方法、静态方法、异常
- angular js 终极购物车
- 两个链表的第一个公共结点
- Matplotlib之pyplot常用操作(一)
- cypher语言
- WPF/UWP 日期格式dd-MMM-yyyy
- 高分编程佳作推荐
- 【Xuggle】Failed to write core dump. Minidumps are not enabled by default on client versions
- Erlang 游戏开发经验总结 转载自没有开花的树
- 工作随笔---WiFi开发(4)---WIFISavedList类
- 小管家桌面程序(备忘录,简洁,自由,持续开发)
- Introduction to Software Engineering 2017年9月27日 作业2