之前的文章是《入门操作:创建画布/调整子图/创建“AXES轴域”》:link.
本文将介绍“折线图”相关内容
plt.plot()函数中的参数非常多,书写参数的方式也不同,下面列出几种常见的参数书写形式:
(1)plot(X,Y)
(2)plot(X,Y,LineSpec)
(3)plot(___,Name,Value)
其中(2)和(3)是两种设置线型,符号,颜色等参数的不同方式;区别在于(2)中的LineSpec参数只有三部分内容(线型,数据标记符号和颜色,且线点颜色不能区分),而(3)中的“Name,Value”参数则可以分别定义各个“Name”的值(可以设置的内容更多)
(1) ‘Color’ - 线条颜色
(2)‘LineStyle’ - 线型
(3)‘LineWidth’ - 线条宽度,默认值0.5
(4) ‘Marker’ - 标记符号
(5)‘MarkerSize’ - 标记大小
(6)‘MarkerEdgeColor’ - 标记轮廓颜色
(7)‘MarkerFaceColor’ - 标记填充颜色
(1)XY值分别是一个点:直线
# 两点直接的直线
from matplotlib import pyplot as plt
plt.plot([1,2],[8,9])
plt.show()
(2)XY值分别是一个向量,要求长度一致:折线
# 一条折线,由(X1,Y1),(X2,Y2)画到(Xn,Yn)
from matplotlib import pyplot as plt
X = [0, 1, 2, 3, 4, 5, 6]
Y = [10, 12, 12, 10, 14, 22, 24]
plt.plot(X, Y)
plt.show()
(1)X是一个矩阵(n*m),Y是一个向量(n个元素):m条折线,使用相同的Y值,对应不同的X
解释:这听起来可能有点绕,但是我们可以想像成多组X值,和一组Y值,即:
X1=(x1,x2,x3,x4,x5…)
X2=(x1,x2,x3,x4,x5…)
X3=(x1,x2,x3,x4,x5…)
Y = (y1,y2,y3,y4,y5…)
分别使用plt.plot()函数画:(X1,Y),(X2,Y),(X3,Y)
不同的是,我们只是将X1,X2,X3以列的方向写成矩阵的形式
from matplotlib import pyplot as plt
X = [[0,1,4],[3,5,7],[4,7,10],[6,10,15]]
Y = [0,1,2,3]
plt.plot(X,Y)
plt.show()
(2)X是一个矩阵(nm),Y也是一个矩阵要求大小一致(nm):列列对应,m条折线
from matplotlib import pyplot as plt
X = [[6,10,15],[3,5,7],[8,7,10]]
Y = [[2,1,3],[9,2,6],[7,3,9]]
plt.plot(X,Y)
plt.show()
# 两个参数:一个以字符串为元素的列表(有几组内容列几个名字);图标显示的位置
# !!!需要注意的是,多组数据的操作实际上都是通过Y来标记X的列,所以命名数据标示时,名字应该就是X矩阵中的每列的名称
plt.legend(['Column1', 'Column2'...], loc=6,fontsize=12)
# 其中loc参数含义:
0 best
1 upper right
2 upper left
3 lower left
4 lower right
5 right
6 center left
7 center right
8 lower center
9 upper center
10 center
# plt.axis([min_x,max_x,min_y,max_y])两轴展示最小值到最大值之间的图形
x = [0, 1, 2, 3, 4]
y = [0, 1, 4, 9, 16]
plt.plot(x, y)
plt.axis([0, 3, 2, 5])
plt.show()
# 设置坐标轴边界 xlim ylim
plt.xlim(min_x, max_x)
plt.ylim(min_y, max_y)
其中单个必填参数,一个选填参数:
(1)X轴
(2)y轴的下限:设置阴影区域的底部
(3)y轴的上限:设置阴影区域的顶部
(4)alpha = n :取之在(0,1)表示阴影的透明度
from matplotlib import pyplot as plt
months = range(12)
month_names = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
revenue = [16000, 14000, 17500, 19500, 21500, 21500, 22000, 23000, 20000, 19500, 18000, 16500]
plt.plot(months,revenue)
ax=plt.subplot()
ax.set_xticks(months)
ax.set_xticklabels(month_names)
y_lower=[i-0.1*i for i in revenue]
y_upper=[i+0.1*i for i in revenue]
plt.fill_between(months,y_lower,y_upper,alpha=0.2)
plt.show()