1.arange函数
arange函数需要三个参数,分别为起始点、终止点、采样间隔。采样间隔默认值为1
看例子:
import numpy as np #import matplotlib.pyplot as plt x=np.arange(-5,5,1) print(x)
2.绘制sin(x)曲线
import numpy as np import matplotlib.pyplot as plt x=np.arange(-10,10,0.1) y=np.sin(x) plt.plot(x,y) plt.show()
import numpy as np import matplotlib.pyplot as plt
这部分是导入numpy库,之后起个小名叫np
导入matplotlib.pyplot(一个挺像MATLAB的函数集合),几个小名叫plt.
plt(x,y),咱画平面图也就xy了。
plt.show(),展示图片。
根据正文的第一个标题我们使用arange函数,可以看出(-10,10,0.1)前俩数字是决定横轴的范围,最后一个数字算是精度(这个数越大越糙),下面我看一下精度为一是什么样子的。
可以说是。。。不太美观。
3. 给sin()加标题,控制x,y轴
import numpy as np import matplotlib.pyplot as plt x=np.arange(-10,10,0.1) y=np.sin(x) plt.xlim(-10,10) plt.ylim(-3,3) plt.xlabel("x") plt.ylabel("y=x^3") plt.title("$y=x^3$") plt.plot(x,y) plt.show()
plt.xlim,这是控制x轴的范围的函数,这是固定的,不可以改,同理,plt.ylim也是。
plt.ylabel,这是给y轴填写标题的函数,同上。
plt.title,填写标题,在最上面,最中间的位置,可以看出这个“$”是不显示的。
4.linspace函数
linspace函数进行采样,linspace函数指定开始值、终值和元素个数来创建一维数组,可以通过endpoint=True关键字指定是否包括终值,缺省设置是包括终值。
看不明白,上例子——>
import numpy as np #import matplotlib.pyplot as plt x=np.linspace(0,10,5) print(x) y=np.linspace(1,10,10) print(y)
x中每个数相差2.5;
y中每个数相差1。
5.使用linspace函数画一个sin()
import numpy as np from pylab import * x=np.linspace(-6,6,100) sin1=np.sin(x) xticks(np.linspace(-5,5,5),('-5','-2.5','0','2.5','5')) plot(x,sin1,color='blue',linewidth=2.0,linestyle=':') show()
pylab中包括了很多numpy和pyplot中的常用函数;
xticks(np.linspace(-5,5,5),('-5','-2.5','0','2.5','5')):这个我感觉就是控制x轴的,后面括号的五个数字换啥都行,对应的就是横轴里面的五个坐标(是叫坐标吧),其实没有后面的括号也行,系统还是会匹配这五个数字。
plot(x,sin1,color='blue',linewidth=2.0,linestyle=':'):前两个数就相当于原来的xy,设置蓝色的线,线的宽度是2,线的样式是...的。
(可以选择这些样式:'-', '--', '-.', ':', 'None', ' ', '', 'solid', 'dashed', 'dashdot', 'dotted')。
6.书接上回绘制一条曲线
import numpy as np from pylab import * x=np.linspace(-6,6,100) sin1=np.sin(x) xticks(np.linspace(-5,5,5),('-5','-2.5','0','2.5','5')) plot(x,sin1,color='blue',linewidth=2.0,linestyle=':') show()
7.一张图片上绘制两条曲线
import numpy as np from pylab import * x=np.linspace(-6,6,100) sin1=np.sin(x) cos1=np.cos(x) xticks(np.linspace(-5,5,5),('-5','-2.5','0','2.5','5')) plot(x,sin1,color='blue',linewidth=2.0,linestyle=':') plot(x,cos1,color='green',linewidth=2.0,linestyle='-') show()
如上图所示两条曲线就是复制对应曲线的代码,很简单,但是缺点什么,那就是图例,要不然我怎么知道那条曲线是干什么的。
8.图例添加
import numpy as np from pylab import * x=np.linspace(-6,6,100) sin1=np.sin(x) cos1=np.cos(x) xticks(np.linspace(-5,5,5),('-5','-2.5','0','2.5','5')) plot(x,sin1,color='blue',linewidth=2.0,linestyle=':',label='sin(x)') plot(x,cos1,color='green',linewidth=2.0,linestyle='-',label='cos(x)') legend(loc='lower left') show()
唯一和标题2,就多了几个代码:
label='sin(x)'【这句话是给图例加文字用的】
legend(loc='lower left')【这是控制图例位置的】
接下来引入下一个标题:legend函数
9.legend用法
我这里主要是将图例的摆放位置:
best 中文最好的,电脑自己选呗
upper right 右上
upper left 左上
lower left 左下
lower right 右下
right 中间最右
center left 中央偏左
center right 中央偏右
lower center 中央偏下
upper center 中央偏上
center 中央
最好把,是自己上手试一下,这些数据是哪来的呢,我直接写错(͡° ͜ʖ ͡°),程序报错了,电脑直接就告诉我都有啥了(͡° ͜ʖ ͡°)。。
10.画饼图
import numpy as np import matplotlib.pyplot as plt data=[1,2,3,4,2] print(data) plt.pie(data,explode=[0,0,0,0,0]) plt.show()
data【存放数据,这里放几个数体现在图中就是几个区域】;
那个print没啥用,测试随机数的时候写的,忘删除了;
plt.pie(data,explode=[0,0,0,0,0]),画饼图用的,explode这个参数里面的每个数字不是零之后,都会有一块对应的区域“飞起来”。下面展示一下啊。
import numpy as np import matplotlib.pyplot as plt data=[1,2,3,4,2] print(data) plt.pie(data,explode=[0,0,0.3,0,0]) plt.show()
那个数字也可以是负数呢,我把第三个数字换成-0.5看看奥。
可以,但是不好。
对了我上头说过随机数,就是把data换成随机生成的列表。
替换的语句是:
data=np.random.randint(1,8,5)
第一个数是随机数的下线(大于等于),第二个数是上限(小于等于),最后一个数是随机出来几个数(五个)。
import numpy as np import matplotlib.pyplot as plt data=np.random.randint(1,8,5) print(data) plt.pie(data,explode=[0,0,0.5,0,0]) plt.show()
11.散点图
import numpy as np from pylab import * a=np.random.normal(0,10,100) b=np.random.normal(0,1,100) scatter(a,b,s=10,c='green') show()
绘制散点图要注意num(a)=num(b),即a的数量等于b的数量;
scatter(x,y,s=10,c='green'),用来绘制散点图的函数,s代表散点图中(点)圆圈的大小,c代表圆圈的的颜色。
np.random.normal(0,1,100):提供服从正态分布的数据,看下面的例子:
import numpy as np y=np.random.normal(0,1,100) print(y)
0:正态分布的均值,0就是y轴的位置。
1:正态分布的标准差,数字越大,正态分布越矮胖;数字越小,正太分布曲线越高瘦。
中间这个数据可以是零,大不了点都集中在中心呗,负数不可以。
100:数据数量,上图中提供100个数据。
12. 柱图
import numpy as np import matplotlib.pyplot as plt plt.figure(figsize=(6,5)) data = np.random.randint(1,8,10) print(data) x= np.arange(len(data)) plt.bar(x+1,data,alpha=1,color='green',width=0.2) plt.show()
加标题等情况使用中文:
import matplotlib as mpl
mpl.rcParams['font.family']='sans-serif'#显示无衬线字体
mpl.rcParams['font.sans-serif']=[u'SimHei']#显示中文
上面的和下面的这几句不用都使用,使用一个就行,要是不行,那就再想想办法吧。
plt.rcParams["font.sans-serif"] = ["SimHei"]# 正确显示中文和负号
plt.rcParams["axes.unicode_minus"] = False
plt.bar (x,data,alpha=1,color='green',width=0.2)
分别是x轴,y轴, 柱形颜色深浅,柱形的颜色,柱形的宽度
x= np.arange(len(data))
13.柱形图加折线
import numpy as np import matplotlib.pyplot as plt plt.figure(figsize=(6,5)) data = np.random.randint(1,8,10) print(data) x= np.arange(len(data)) plt.plot(x+1,data,color='r') plt.bar(x+1,data,alpha=1,color='green',width=0.5) plt.show()
plt.plot(x+1,data,color='r'),画折线的代码,加上即可。
14.简单三维图
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() sd = fig.add_subplot(111, projectinotallow='3d')#111,221,222,223,224 plt.show()
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() sd = fig.add_subplot(111, projectinotallow='3d')#111,221,222,223,224 X = [0, 1, 2, 1, 2, 4] Y = [0, 4, 4, 1, 3, 4] Z = [0, 4, 0, 0, 2, 4] sd.plot_trisurf(X, Y, Z) plt.show()
这个3d图可以转动,方便观察;
第四行代码:111,就是全屏或者或是正中间,剩下(221、222、223、224)对应四个角落。
plot_trisurf(z,y,z,...) :画3d曲平面的函数。
x,y,z要竖着看,一列对应的是一个点的坐标。
15.三维曲面标题等设置
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D plt.rcParams["font.sans-serif"] = ["SimHei"]# 正确显示中文和负号 plt.rcParams["axes.unicode_minus"] = False fig = plt.figure() sd = fig.add_subplot(111, projectinotallow='3d')#111,221,222,223,224 X = [0, 1, 2, 1, 2, 4] Y = [0, 4, 4, 1, 3, 4] Z = [0, 4, 0, 0, 2, 4] sd.set_xlabel('x轴') sd.set_ylabel('y轴') sd.set_zlabel('z轴') plt.title('这是标题') sd.plot_trisurf(X, Y, Z) plt.show()
我就直接使用标题1里面的代码加工了,
sd.set_xlabel('x轴')#x轴函数
sd.set_ylabel('y轴')#y轴函数
sd.set_zlabel('z轴')#z轴函数
plt.title('这是标题')#添加标题函数
因为我使用了中文,
plt.rcParams["font.sans-serif"] = ["SimHei"]# 正确显示中文和负号
plt.rcParams["axes.unicode_minus"] = False
所以还得用这两行代码,要是仅仅使用英文的话删除即可。