目录
常用的 pyplot 函数:
plot()
:用于绘制线图和散点图scatter()
:用于绘制散点图bar()
:用于绘制垂直条形图和水平条形图hist()
:用于绘制直方图pie()
:用于绘制饼图imshow()
:用于绘制图像subplots()
:用于创建子
一、案例1
import matplotlib.pyplot as plt #给 matplotlib.pyplot起别名plt
import numpy as np #给numpy起别名np
x=np.linspace(-5,5,500)
y=np.tan(x) #tan(x)是库函数,必须加np
plt.plot(x,y,color="red",linewidth=3,marker="^",markersize=5)#plot函数设置图片的属性
plt.show()
运行结果
相关函数:
plot() 用于画图它可以绘制点和线,语法格式如下:
# 画单条线 plot([x], y, [fmt], *, data=None, **kwargs) # 画多条线 plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)
参数说明:
- x, y:点或线的节点,x 为 x 轴数据,y 为 y 轴数据,数据可以列表或数组。
- fmt:可选,定义基本格式(如颜色、标记和线条样式)。
- **kwargs:可选,用在二维平面图上,设置指定属性,如标签,线的宽度等。
>>> plot(x, y) # 创建 y 中数据与 x 中对应值的二维线图,使用默认样式
>>> plot(x, y, 'bo') # 创建 y 中数据与 x 中对应值的二维线图,使用蓝色实心圈绘制
>>> plot(y) # x 的值为 0..N-1
>>> plot(y, 'r+') # 使用红色 + 号
颜色字符:'b' 蓝色,'m' 洋红色,'g' 绿色,'y' 黄色,'r' 红色,'k' 黑色,'w' 白色,'c' 青绿色,'#008000' RGB 颜色符串。多条曲线不指定颜色时,会自动选择不同颜色。
线型参数:'‐' 实线,'‐‐' 破折线,'‐.' 点划线,':' 虚线。
标记字符:'.' 点标记,',' 像素标记(极小点),'o' 实心圈标记,'v' 倒三角标记,'^' 上三角标记,'>' 右三角标记,'<' 左三角标记...等等。
如果我们要绘制坐标 (1, 3) 到 (8, 10) 的线,我们就需要传递两个数组 [1, 8] 和 [3, 10] 给 plot 函数:
数说明:plot相关函Matplotlib Pyplot | 菜鸟教程 (runoob.com)
二、案例2
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-10,10,100)
y=np.cos(x)*np.tan(x)*x**2
# 通过rc参数修改字体为黑体,就可以显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
# 通过rc参数修改字符显示,就可以正常显示负号
plt.rcParams['axes.unicode_minus'] = False
plt.figure() #第一个函数图像
plt.plot(x,y)
plt.xlim(xmin=-50)
plt.ylim(ymax=50)
plt.xlabel("横坐标")#给横坐标添加标签
plt.ylabel("纵坐标")#给纵坐标添加标签
plt.xticks()
plt.yticks(ticks=[-50,-40,-30,-20,-10,0],labels=['a','b','c','d','e','f'])
plt.figure() #第二个函数图像
plt.plot(x,y)
plt.xlim((-2,4))
plt.ylim(ymin=-0.5,ymax=2)
plt.xlabel("横坐标")
plt.ylabel("纵坐标")
plt.show()
添加中文标签不显示的情况下,输入:
# 通过rc参数修改字体为黑体,就可以显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
# 通过rc参数修改字符显示,就可以正常显示负号
plt.rcParams['axes.unicode_minus'] = False
运行结果
三、案例3
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-10,10,100)
y=np.cos(x)*np.tan(x)*x**2
# 通过rc参数修改字体为黑体,就可以显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
# 通过rc参数修改字符显示,就可以正常显示负号
plt.rcParams['axes.unicode_minus'] = False
plt.figure()
plt.plot(x,y)
plt.text(x=-2.5,y=10,s="sinx",size=50,color="red")#添加文本
plt.show()
运行结果
相关函数 :
1、plt.text()作用:画图时给图中的点 加标签 plt.text(x, y, s, fontsize, verticalalignment,horizontalalignment,rotation , kwargs)
其中
(1)x,y:标签添加的位置,注释文本内容所在位置的横/纵坐标,默认是根据坐标轴的数据来度量的,是绝对值,也就是说图中点所在位置的对应的值,特别的,如果你要变换坐标系的话,要用到transform=ax.transAxes参数。
(2)s:标签的符号,字符串格式,比如你想加个“我爱python”,更多的是你标注跟数据有关的主体。
(3)fontsize:加标签字体大小,取整数。
(4)verticalalignment:垂直对齐方式 ,可选 ‘center’ ,‘top’ , ‘bottom’,‘baseline’ 等
(5)horizontalalignment:水平对齐方式 ,可以填 ‘center’ , ‘right’ ,‘left’ 等
(6)rotation:标签的旋转角度,以逆时针计算,取整
(7)family :设置字体
(8)style: 设置字体的风格
(9)weight:设置字体的粗细
(10) bbox:给字体添加框, 如 bbox=dict(facecolor=‘red’, alpha=0.5) 等。
(11)string:注释文本内容
(12)color:注释文本内容的字体颜色
2、 np.linspace
通过定义均匀间隔创建数值序列。其实,需要指定间隔起始点、终止端,以及指定分隔值总数(包括起始点和终止点);最终函数返回间隔类均匀分布的数值序列。请看示例:
np.linspace(start = 0, stop = 100, num = 5) #x轴起点是0,终点是100,间隔是5
理解如下:
四、案例4
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-10,10,100)
y=np.cos(x)*np.tan(x)*x**2
n=100
x1=np.random.rand(n)
y1=np.random.rand(n)
plt.scatter(x1,y1,s=100,c='r',marker='^',alpha=1)
x2=np.random.rand(n)
y2=np.random.rand(n)
plt.scatter(x2,y2,s=100,c='y',marker='D',alpha=1)
plt.show()
运行结果:
相关函数:
1、scatter() 方法语法格式如下:Matplotlib 散点图 | 菜鸟教程 (runoob.com)
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)
参数说明:
x,y:长度相同的数组,也就是我们即将绘制散点图的数据点,输入数据。
s:点的大小,默认 20,也可以是个数组,数组每个参数为对应点的大小。
c:点的颜色,默认蓝色 'b',也可以是个 RGB 或 RGBA 二维行数组。
marker:点的样式,默认小圆圈 'o'。
cmap:Colormap,默认 None,标量或者是一个 colormap 的名字,只有 c 是一个浮点数数组的时才使用。如果没有申明就是 image.cmap。
norm:Normalize,默认 None,数据亮度在 0-1 之间,只有 c 是一个浮点数的数组的时才使用。
vmin,vmax::亮度设置,在 norm 参数存在时会忽略。
alpha::透明度设置,0-1 之间,默认 None,即不透明。
linewidths::标记点的长度。
edgecolors::颜色或颜色序列,默认为 'face',可选值有 'face', 'none', None。
plotnonfinite::布尔值,设置是否使用非限定的 c ( inf, -inf 或 nan) 绘制点。
**kwargs::其他参数。
五、案例5
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-10,10,100)
y=np.cos(x)
x0=np.arange(12)
h1=np.random.uniform(1.0,5.0,12)
plt.bar(x0,h1,width=1,bottom=1.5,color='yellow',edgecolor='red')
h2=np.random.uniform(-5.0,-1,12)
plt.bar(x0,h2,width=1,bottom=-1.5,color='red',edgecolor='yellow')
plt.show()
运行结果:
相关函数:
1、 np.range()
函数语法
range(start, stop[, step])
参数说明:
- start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
- stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
- step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
2、 plt.bar()
bar()
的基础参数如下:
x
:柱子在x
轴上的坐标。浮点数或类数组结构。注意x
可以为字符串数组!height
:柱子的高度,即y
轴上的坐标。浮点数或类数组结构。width
:柱子的宽度。浮点数或类数组结构。默认值为0.8
。bottom
:柱子的基准高度。浮点数或类数组结构。默认值为0
。align
:柱子在x
轴上的对齐方式。字符串,取值范围为{'center', 'edge'}
,默认为'center'
。'center'
:x
位于柱子的中心位置。'edge'
:x
位于柱子的左侧。如果想让x
位于柱子右侧,需要同时设置负width
以及align='edge'
。
参考链接:Matplotlib Pyplot | 菜鸟教程 (runoob.com)
六、案例6
import matplotlib.pyplot as plt
import numpy as np
plt.figure()
data=np.array([[124,1,32],[150,222,100],[55,255,180]])#RGB颜色
plt.imshow(data)
plt.show()
运行结果
七、案例7
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-3,3,50)
y1=np.sin(x)
y2=np.tanh(x)
y3=2*x+2
y4=x**2
plt.figure("tutu",(15,14),300)
plt.rcParams.update({'font.size': 8})#修改全局字体大小
plt.subplot(2,3,4)#纵的分成2份,横的分成3份,第4个图像
plt.plot(x,y3)
plt.subplot(2,3,5)
plt.plot(x,y4)
#
plt.subplot(2,1,1)
plt.plot(x,y2)
#
plt.subplot(2,3,6)
plt.plot(x,y1)
plt.savefig(r"C:\Users\15535\Desktop\12.jpg")
plt.show()
运行结果
八、案例8(线性回归)
import matplotlib.pyplot as plt
import numpy as np
# 通过rc参数修改字体为黑体,就可以显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
# 通过rc参数修改字符显示,就可以正常显示负号
plt.rcParams.update({'font.size': 15})#修改全局字体大小
plt.rcParams['axes.unicode_minus'] = False
from sklearn import datasets,linear_model
from sklearn.model_selection import train_test_split
##第一步 下载数据
datas,targets=datasets.make_regression(100,n_features=1,
n_targets=1,
noise=15,
random_state=0)
print(len(datas))
#第二步 切割数据集
train_data,test_data,train_level,test_label=train_test_split(datas,targets,test_size=0.3,train_size=0.7)
print(len(train_data))
print(len(train_level))
print(len(test_data))
print(len(test_label))
#第三步 特征工程---(标准化,二值化,正则化)
#第四步 模型选择(自己定义一个模型)
model=linear_model.LinearRegression()
#第五步 训练
model.fit(train_data,train_level)
#设置一个点进行线性拟合
_x=np.array([-2.5,2.5])
_y=model.coef_ * _x+model.intercept_
print(_x)
print(_y)
plt.scatter(train_data,train_level)
plt.plot(_x,_y,linewidth=2,color='red')
plt.title("线性回归")
plt.show()
运行结果