使用matplotlib制作“折线图”:pyplot.plot()/给多组数据添加解释图标/放大坐标轴部分区间

之前的文章是《入门操作:创建画布/调整子图/创建“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”的值(可以设置的内容更多)

  • LineSpec参数描述:一个字符串,分别表示线型、标记和颜色
    使用matplotlib制作“折线图”:pyplot.plot()/给多组数据添加解释图标/放大坐标轴部分区间_第1张图片
    使用matplotlib制作“折线图”:pyplot.plot()/给多组数据添加解释图标/放大坐标轴部分区间_第2张图片
    使用matplotlib制作“折线图”:pyplot.plot()/给多组数据添加解释图标/放大坐标轴部分区间_第3张图片
  • Name,Value参数描述(不区分大小写):

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

使用matplotlib制作“折线图”:pyplot.plot()/给多组数据添加解释图标/放大坐标轴部分区间_第4张图片
(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()

使用matplotlib制作“折线图”:pyplot.plot()/给多组数据添加解释图标/放大坐标轴部分区间_第5张图片

  • 给多组数据添加解释图标
# 两个参数:一个以字符串为元素的列表(有几组内容列几个名字);图标显示的位置
# !!!需要注意的是,多组数据的操作实际上都是通过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)
  • 阴影:plt.fill_between()函数

其中单个必填参数,一个选填参数:
(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()

使用matplotlib制作“折线图”:pyplot.plot()/给多组数据添加解释图标/放大坐标轴部分区间_第6张图片

你可能感兴趣的:(python,matplotlib)