十大攻略助你matplotlib入门
写在前面的话:
matplotlib是python的第三方库。所以当你安装完python 时,并不在library里面。因此,你需要进行安装。我用python的库安装工具pip安装的,大家可以自己百度一下。
matplotlib是一个非常灵活的画图工具。其实,用画图工具来描述它是不准确的,我们应该叫它分析工具。在大数据分析的时候,是非常有用的。比如实现下面这个效果。
简单如:
复杂的如:
当然还有很多酷炫的效果图,我不在这儿赘述了。它会让大数据更加直观化。说了这么多,让我们开始从一个最简单的折线图开始吧。
在开始的开始我们应该先导入库,在后面的程序中,我就不在重复这一过程了,直接引用了。
import numpy as np #数学计算用的库,主要是矩阵。在另一个笔记中详细说
import matplotlib
import matplotlib.pyplot as plt
画一个简单的折线图
说起画图,给我印象最深的是,在做大学物理实验时,将记录下来的数据,在坐标纸上,一个点一个点描,然后连线,形成一个折线图。现在想起满满的都是青春的回忆。因此,图表作图最初的印象就是折线图。因此,我们也以一个折线图开始这篇博文。
#折线图
def linePlots():
x=[1,2,3,4,5]
y=[1,4,9,16,25]
#plot方法就是把数据画出来
plt.plot(x,y)
plt.show()
很简单吧,通过上面两条命令就可以把上面这个图画出来。
再画一个散点图
我们已经实现了折线图,但是如果我们只要实现一个散点图,不需要线段怎么办?其实也很简单。同样的数据,我们只需要在刚才plot()方法在后面加个参数 “o”就可以了。
#散点图
def scatterPlots():
x=[1,2,3,4,5]
y=[1,4,9,16,25]
plt.plot(x,y,'o')#加一个参数'o'就是散点图了
plt.show()
换个颜色
大家发现了,我们画的上面两幅图表,无论折线图,还是散点图,都是蓝色的,如果我想换个颜色怎么办了?万能法则,加参数 加个参数”r”就是红色的了。
#散点图设置颜色
def colorScatterPlots():
x=[1,2,3,4,5]
y=[1,4,9,16,25]
plt.plot(x,y,'or')#加一个参数'r'就可以变换颜色了
plt.show()
#其中:r:red,b:blue,g:green,y:yellow,k:black,w:white,c:cyan蓝绿色,m:magenta品红
我把颜色对应的参数,整理一个表格如下:
参数 | 颜色 |
---|---|
r | red:红色 |
b | blue:蓝色 |
g | green:绿色 |
y | yellow:黄色 |
k | black:黑色 |
w | white:白色 |
c | cyan:蓝绿色 |
m | magenta:品红 |
最后,这两组颜色有点诡异。我就不吐槽了。
变化一下线条样式
设置线条样式 的办法还是我们刚才的黄金法则:在plot()方法中,设置参数
#设置线条样式
def styleLinePlots():
x=[1,2,3,4,5]
y=[1,4,9,16,25]
plt.plot(x,y,'-.')#可以设置线条样式
plt.show()
#其中有:--,-,-.,:,None
具体参数设置如下,我全部试验过,大家也可以自己试试。我就不贴图了
参数 | 样式 |
---|---|
– | 虚线 |
- | 实线 |
-. | 点画线 |
: | 虚线:由点构成 |
None | 实线 |
notes:设置上述参数之后,默认就是折线图
变化一下散点图中点的样式
当然你也可以设置散点图中,点的样式
#设置标记点的样式
def styleScatterPlots():
x=[1,2,3,4,5]
y=[1,4,9,16,25]
plt.plot(x,y,'r*')#设置散点形式,并且同时设置颜色
plt.show()
#*:五角星,s:方块,p:五边形,h:六边形,H:六边形,还有:+ x D d(菱形)
参数 | 样式 |
---|---|
* | 五角星 |
s | 方块 |
p | 五边形 |
h | 圆 |
H | 圆:也是个圆,我没测试出区别 |
+ | 符号本身,不好语言描述 |
x | 符号本身,不好语言描述 |
D | 菱形 |
d | 菱形:只是更长一点 |
这么多符号,我相信你也用不了这么多,到时候可以自己测试一下。如果测试出区别来,可以给我留言。
notes:设置上述参数之后,默认就是散点图
notes:前面这几个参数可以调换顺序。
这几个参数要写在同一对引号内。
给图表和坐标轴起个名
如果孤零零的一张图,没有名称,且坐标轴也没有名称。估计我们很难读懂其要表达的含义。因此,我应该给其标示一下各个部分的标题。
def titleOlimitsPlots():
x=[1,2,3,4,5]
y=[1,4,9,16,25]
plt.plot(x,y)
plt.title('mytitle')#设置图表标题
plt.xlabel('x axis')#设置X坐标轴标题
plt.ylabel('y axis')#设置Y坐标轴表
#这是下一个主题设置坐标轴范围的程序,我提前贴在这儿
plt.xlim(0.0,7.0)#设置坐标轴的范围
plt.ylim(0.0,30.0)
plt.show()
也很简单,调用pyplot类的类方法进行设置。
方法 | 含义 |
---|---|
title() | 图标题 |
xlabel() | x轴标题 |
ylabel() | y轴标题 |
设置一下坐标轴的范围
当然,有强迫症的童鞋们已经发现了,我们的坐标轴是从1开始的。而不是0。这是因为其默认设置是按照你的数据智能设置的。我们把它改了吧,不然会逼死强迫症的,哈哈。
代码我已经在上面的程序中贴出来了
...
plt.xlim(0.0,7.0)#设置坐标轴的范围
plt.ylim(0.0,30.0)
...
同样也是调用pyplot类的类方法进行设置
自己设置一下坐标轴的下标值间隔
我们有时候,由于画图需要设置一下,坐标轴下标值的间隔。
#设置一下坐标轴的间隔及显示的内容
def ticksPlots():
x=[1,2,3,4,5]
y=[1,4,9,16,25]
plt.plot(x,y)
plt.title('mytitle')#设置图表标题
plt.xlabel('x axis')#设置X坐标轴标题
plt.ylabel('y axis')#设置Y坐标轴表
plt.xlim(0.0,7.0)#设置坐标轴的范围
plt.ylim(0.0,30.0)
plt.xticks([2,4])#设置x轴的标签间隔
plt.yticks([4,16])#设置y轴的标签间隔
plt.show()
方法是:xticks()或者是yticks()方法。利用列表把值传进去即可
多画几条线对比一下
我们如果在一张坐标纸的坐标系上只画一条线的话,现在已经能够满足要求了。但是如果需要多画几条的话,就继续往下看吧。
#一个坐标系上画多条线或者点
def manyPlots():
x1=[1,2,3,4,5]
y1=[1,4,9,16,25]
x2=[1,2,4,6,8]
y2=[2,4,8,12,16]
plt.plot(x1,y1,'r')
plt.plot(x2,y2,'g')
plt.title('mytitle')#设置图表标题
plt.xlabel('x axis')#设置X坐标轴标题
plt.ylabel('y axis')#设置Y坐标轴表
plt.xlim(0.0,9.0)#设置坐标轴的范围
plt.ylim(0.0,30.0)
plt.show()
是不是觉得异常简单了。你只需在调用一次plot()方法即可。其他原理完全跟上面一样。
给这几条线设置一下图例
现在有两条线了,你搞不清每条的线的具体含义了,你需要设置一下图例了。
# 图例 Figure legends ,即标识
def legendsPlots():
x1=[1,2,3,4,5]
y1=[1,4,9,16,25]
x2=[1,2,4,6,8]
y2=[2,4,8,12,16]
plot1=plt.plot(x1,y1,'r',label='redline')#设置好图例要显示的内容
plot2=plt.plot(x2,y2,'g',label='greenline')#
plt.title('mytitle')#设置图表标题
plt.xlabel('x axis')#设置X坐标轴标题
plt.ylabel('y axis')#设置Y坐标轴表
plt.xlim(0.0,9.0)#设置坐标轴的范围
plt.ylim(0.0,30.0)
plt.legend(loc='upper right',frameon=False)
#设置图例
#位置:‘upper right’, ‘upper left’, ‘center’, ‘lower left’, ‘lower right’
plt.show()
设置图例有两步:
- 给每条线上,设置一个label
调用pyplot的legend()方法,在其中把位置等信息设置上去
位置:我相信这个英文单词大家肯定能读懂,我就不赘述了。
frameon:表示要不要再图例上面加个框。估计大家在excel上都见过
show()方法一定要放在最后。这只是如是入门的笔记。因此很多内容没有细讲。其实每个方法都有很多不同的用法。我只选取了最简单的方法。下一篇笔记中将会再深入一点。
我把这个笔记中用到的所有代码都贴出来吧,大家可以参考。
#coding:utf-8
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
#折线图
def linePlots():
x=[1,2,3,4,5]
y=[1,4,9,16,25]
plt.plot(x,y)
plt.show()
#散点图
def scatterPlots():
x=[1,2,3,4,5]
y=[1,4,9,16,25]
plt.plot(x,y,'o')#加一个参数'o'就是散点图了
plt.show()
#散点图设置颜色
def colorScatterPlots():
x=[1,2,3,4,5]
y=[1,4,9,16,25]
plt.plot(x,y,'or')#加一个参数'r'就可以变换颜色了
plt.show()
#其中:r:red,b:blue,g:green,y:yellow,k:black,w:white,c:cyan蓝绿色,m:magenta品红
#设置线条样式
def styleLinePlots():
x=[1,2,3,4,5]
y=[1,4,9,16,25]
plt.plot(x,y,'--')#可以设置线条样式
plt.show()
#其中有:--,-,-.,:,None
#设置标记点的样式
def styleScatterPlots():
x=[1,2,3,4,5]
y=[1,4,9,16,25]
plt.plot(x,y,'dr')#设置散点形式,并且同时设置颜色
#实测改变两个字母的顺序不影响
plt.show()
#*:五角星,s:方块,p:五边形,h:六边形,H:六边形,还有:+ x D d(菱形)
#设置图表标题,坐标轴标题,坐标轴的最大范围
def titleOlimitsPlots():
x=[1,2,3,4,5]
y=[1,4,9,16,25]
plt.plot(x,y)
plt.title('mytitle')#设置图表标题
plt.xlabel('x axis')#设置X坐标轴标题
plt.ylabel('y axis')#设置Y坐标轴表
plt.xlim(0.0,7.0)#设置坐标轴的范围
plt.ylim(0.0,30.0)
plt.show()
#设置一下坐标轴的间隔及显示的内容
def ticksPlots():
x=[1,2,3,4,5]
y=[1,4,9,16,25]
plt.plot(x,y)
plt.title('mytitle')#设置图表标题
plt.xlabel('x axis')#设置X坐标轴标题
plt.ylabel('y axis')#设置Y坐标轴表
plt.xlim(0.0,7.0)#设置坐标轴的范围
plt.ylim(0.0,30.0)
plt.xticks([2,4])#设置x轴的标签间隔
plt.yticks([4,16])#设置y轴的标签间隔
plt.show()
#一个坐标轴上画多条线或者图
def manyPlots():
x1=[1,2,3,4,5]
y1=[1,4,9,16,25]
x2=[1,2,4,6,8]
y2=[2,4,8,12,16]
plt.plot(x1,y1,'r')
plt.plot(x2,y2,'g')
plt.title('mytitle')#设置图表标题
plt.xlabel('x axis')#设置X坐标轴标题
plt.ylabel('y axis')#设置Y坐标轴表
plt.xlim(0.0,9.0)#设置坐标轴的范围
plt.ylim(0.0,30.0)
plt.show()
# 图例 Figure legends ,即标识
def legendsPlots():
x1=[1,2,3,4,5]
y1=[1,4,9,16,25]
x2=[1,2,4,6,8]
y2=[2,4,8,12,16]
plot1=plt.plot(x1,y1,'r',label='redline')#设置好图例要显示的内容
plot2=plt.plot(x2,y2,'g',label='greenline')#
plt.title('mytitle')#设置图表标题
plt.xlabel('x axis')#设置X坐标轴标题
plt.ylabel('y axis')#设置Y坐标轴表
plt.xlim(0.0,9.0)#设置坐标轴的范围
plt.ylim(0.0,30.0)
plt.legend(loc='upper right',frameon=True)
#设置图例
#位置:‘upper right’, ‘upper left’, ‘center’, ‘lower left’, ‘lower right’
#frameon:图例上的那个框
plt.show()