一、图的个数及子图设置
1、基本绘图流程
- 创建画板(图形界面) : plt.figure() 可以省略,主要用于设置显示图形的大小
- 画图:plt.plot(x, y)
- 显示出来: plt.show( )
上述流程代码演示:
import matplotlib.pyplot as plt
x = [1,2,3]
y = [1,2,3]
plt.figure() #设置画板大小(此行可以省略)如:plt.figure(figsize=(10,8))表示画板的长为10,宽为8
plt.plot(x, y)
plt.show()
结果如图所示
2、plt.add_subplot( ):绘制多个图
import matplotlib.pyplot as plt
x = [1,2,3]
y = [1,2,3]
#1.创建一个画板
fig = plt.figure()
#2.在画板上绘制第一个子图(add_subplot(121)函数表示1行2列第1个子图)
ax1 = fig.add_subplot(121)
ax1.plot(x,y) #该子图是折线图
#3.在画板上绘制第二个子图(add_subplot(122)函数表示1行2列第2个子图)
ax2 = fig.add_subplot(122)
ax2.scatter(x,y) # 该子图是散点图
#4.显示图像
plt.show()
3、plt.subplot( ):绘制多个图
import matplotlib.pyplot as plt
x = [1,2,3]
y = [1,2,3]
#2.在画板上绘制第一个子图(plt.subplot(121)函数表示1行2列第1个子图)
#可以看出此种方式省略了plt.add_subplot( )方式中创建画板的步骤
ax1 = plt.subplot(121)
ax1.plot(x,y) #该子图是折线图
#3.在画板上绘制第二个子图(add_subplot(122)函数表示1行2列第2个子图)
ax2 = plt.subplot(122)
ax2.scatter(x,y) # 该子图是散点图
#4.显示图像
plt.show()
4、plt.subplots( ):一个步骤生成多个图(推荐使用)
import matplotlib.pyplot as plt
x = [1,2,3]
y = [1,2,3]
#1.直接生成1行2列的两个子图,分别作为对象返回给元组中的axe1和axe2
fig,(axe1,axe2) = plt.subplots(1,2)
#注意:若是只生成1个图,可以使用以下语句
# fig,axe = plt.subplots()
#2.画出子图
axe1.plot(x,y) #该子图是折线图
axe2.scatter(x,y) #该子图是散点图
#3.显示图
plt.show()
二、相关函数
1、折线图:plot( )
plt.plot(x, y, color="r", linestyle="--", marker="*", linewidth=1.0)
参数:
- x:横坐标
- y:纵坐标
- color:线条颜色
- linestyle:线条风格
- marker:坐标点样式
- linewidth:线条宽度
相关设置如下:
上面函数显示的图形样式如下所示
2、柱状图:bar()和barh()
(1)使用bar()函数绘制甘特图
import matplotlib.pyplot as plt
x_lable = [1, 2, 3, 4, 5]
y_lable = [2, 4, 6, 8, 10]
width_value = [1,1,1,1,1]
for i in range(0, len(x_lable)):
plt.bar(x_lable[i], bottom= y_lable[i], width=width_value[i], height= 0.5, orientation ="horizontal")
plt.show()
各个参数示意图如下:
注意:使用以下代码同样可以绘制与上面方式一样的甘特图,区别在于以下方式绘制的甘特图只有一种颜色
import matplotlib.pyplot as plt
x_lable = [1, 2, 3, 4, 5]
y_lable = [2, 4, 6, 8, 10]
width_value = [1,1,1,1,1]
plt.bar(x_lable, bottom= y_lable, width=width_value, height= 0.5, orientation ="horizontal")
plt.show()
(2)使用barh()函数绘制甘特图(更好理解,推荐使用)
plt.barh(y, width, height=0.8, left=None, *, align=‘center’, **kwargs)
函数参数:
- y: 条形的y轴坐标。
- width:条形的宽度
- height: 条形的高度,默认值0.8
- left:条块左侧的x坐标。
- align:条块底部与y轴坐标的对齐方式(默认为中间)
- color:条块颜色
- edgecolor:条块边缘的颜色
- linewidth:线条宽度:可选参数。
import matplotlib.pyplot as plt
x_lable = [1, 2, 3, 4, 5]
y_lable = [2, 4, 6, 8, 10]
width_value = [1,1,1,1,1]
for i in range(len(x_lable)):
plt.barh(y_lable[i], width = width_value[i], height=0.8, left=x_lable[i])
plt.show()
注意:此函数绘制出的图形和内容与使用bar( )函数绘制出来的完全一致,且更好理解,推荐使用。
3、坐标轴相关
(1)、设置坐标轴范围:axis( ),xlim( ),ylim( )
plt.axis([x_min, x_max, y_min, y_max])
参数:
- x_min:x轴的起始坐标
- x_max:x轴的终止坐标
- y_min:y轴的起始坐标
- y_max:y轴的终止坐标
单独想要控制x轴取值:
plt.xlim(x_min, x_max)
单独想要控制y轴的取值:
plt.ylim(y_min, y_max)
(2)、设置坐标轴标签:xlabel( ),ylabel( )
plt.xlabel("x - label") #将x轴标签设置为"x - label"
plt.ylabel("y - label") #将y轴标签设置为"y - label"
结果如下:
(3)、设置坐标轴刻度及要显示内容:xticks(),yticks()
plt.xticks(locs, [labels], **kwargs)
参数:
- locs:显示的位置 (可以分刻度)
- labels:locs这些位置上的标签,labels的默认值为和locs相同,若该值为空,表示不显示内容
import numpy as np
import matplotlib.pyplot as plt
x = range(1,13,1)
y = range(1,13,1)
plt.plot(x,y)
plt.xticks(x, ('Tom','Dick','Harry','Sally','Sue','Lily','Ava','Isla','Rose','Jack','Leo','Charlie'))
plt.show()
yticks()与之类似
(4)、设置x轴和y轴的取值范围:axis( )
plt.axis([a, b, c, d])
设置x轴的范围为[a, b],y轴的范围为[c, d]
(5)、设置坐标轴上刻度及字体格式:tick_params()
https://blog.csdn.net/qq_35240640/article/details/89478662
4、设置图名:title( )
plt.title("picture")
5、设置图例:legend( )
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y1 = [1.2, 2.5, 4.5, 7.3]
y2 = [4,4,4,4]
# 1.通过设置来表示是哪一条线
l1,= plt.plot(x, y1, color="r")
l2,= plt.plot(x, y2, color="b")
# 2.调用函数legend()来设置图例
plt.legend(handles=[l1, l2], labels=['up', 'down'], loc='upper left')
plt.show()
参数:
- handles:要设置的是哪些线
- lables:图线的名称分别是什么
- loc:图例的位置
loc:图例的位置的取值:
注意:上中下和左右可以两两进行组合
- 上 :upper
- 中:center
- 下:lower
- 左:left
- 中:center
- 右: right
- 自适配最佳放置位置:best
6、添加文本:text( )
matplotlib.pyplot.text(x, y, s, fontdict=None, **kwargs)
参数:
- x,y:放置文本的坐标。浮点数。必备参数。
- s:文本。字符串。必备参数。
- fontsize:加标签字体大小,取整数。
- verticalalignment:垂直对齐方式 ,可选 ‘center’ ,‘top’ , ‘bottom’,‘baseline’ 等
- horizontalalignment:水平对齐方式 ,可以填 ‘center’ , ‘right’ ,‘left’
等 - rotation:标签的旋转角度,以逆时针计算,取整
- family :设置字体
- style: 设置字体的风格
- weight:设置字体的粗细 color:注释文本内容的字体颜色