matplotlib综合学习

时间:2022-06-06 00:37:56

1.arange函数

arange函数需要三个参数,分别为起始点、终止点、采样间隔。采样间隔默认值为1

看例子: 

import numpy as np
#import matplotlib.pyplot as plt
x=np.arange(-5,5,1)
print(x)

matplotlib综合学习

matplotlib综合学习

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

matplotlib综合学习

matplotlib综合学习

import numpy as np
import matplotlib.pyplot as plt

matplotlib综合学习

这部分是导入numpy库,之后起个小名叫np

导入matplotlib.pyplot(一个挺像MATLAB的函数集合),几个小名叫plt.

plt(x,y),咱画平面图也就xy了。

plt.show(),展示图片。

根据正文的第一个标题我们使用arange函数,可以看出(-10,10,0.1)前俩数字是决定横轴的范围,最后一个数字算是精度(这个数越大越糙),下面我看一下精度为一是什么样子的。 

matplotlib综合学习

 可以说是。。。不太美观。

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

matplotlib综合学习

matplotlib综合学习

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)

matplotlib综合学习

matplotlib综合学习

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

matplotlib综合学习

matplotlib综合学习

 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')。

matplotlib综合学习

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

matplotlib综合学习

matplotlib综合学习

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

matplotlib综合学习

matplotlib综合学习

如上图所示两条曲线就是复制对应曲线的代码,很简单,但是缺点什么,那就是图例,要不然我怎么知道那条曲线是干什么的。 

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

matplotlib综合学习

matplotlib综合学习

唯一和标题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()

matplotlib综合学习

matplotlib综合学习

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

matplotlib综合学习

matplotlib综合学习

 那个数字也可以是负数呢,我把第三个数字换成-0.5看看奥。

matplotlib综合学习

 可以,但是不好。

对了我上头说过随机数,就是把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()

matplotlib综合学习


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

matplotlib综合学习

 绘制散点图要注意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)

matplotlib综合学习

0:正态分布的均值,0就是y轴的位置。

1:正态分布的标准差,数字越大,正态分布越矮胖;数字越小,正太分布曲线越高瘦。

中间这个数据可以是零,大不了点都集中在中心呗,负数不可以。


matplotlib综合学习


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

matplotlib综合学习

加标题等情况使用中文:

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

 x= np.arange(len(data))


matplotlib综合学习


plt.bar (x,data,alpha=1,color='green',width=0.2)

分别是x轴,y轴, 柱形颜色深浅,柱形的颜色,柱形的宽度 

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

matplotlib综合学习

 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, projection='3d')#111,221,222,223,224
plt.show()

matplotlib综合学习

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

matplotlib综合学习

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

matplotlib综合学习

我就直接使用标题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

所以还得用这两行代码,要是仅仅使用英文的话删除即可。