前言
matplotib主要用于绘制2D图表的Python库,通过Matplotlib, 开发者可以仅需要几行代码,便可以生成绘 图,直方图,功率谱,条形图,错误图,散点图等。它支持numpy、pandas的数据结构,具有丰富的绘 制图表、定制图表元素(图例、注释文本、表格等)或样式(如颜色、字体、线型等)的功能,可以帮助开发 人员轻松获得高质量的图表。此外,matplotlib还可用于绘制一些3D图表。matplotlib实际上是一个面向 对象的绘图库,它所绘制的图表元素均对应一个对象。matplotlib 官网提供了3种API : pyplot API、objectoriented API、pylab API。
一、绘制折线图
pyplot的plot()函数的语法格式:
plot(x, y, fmt , data=None, label=None, *args, **kwargs)
x :表示x轴上的数据
y :表示y轴的数据
fmt :表示快速设置线条样式的格式字符串
label : 表示应用成图例标标签文本
代码如下(示例):
#引入绘图模块
import matplotlib.pyplot as plt
#引入numpy
import numpy as np
#准备数据
data = np.array([1,2,3,4,5])
#获取画布对象
fig = plt.figure()
#获取到绘制区域对象
ax = fig.add_subplot(1,1,1)
#添加数据
ax.plot(data)
#绘制
plt.show()
或者
#引入绘图模块
import matplotlib.pyplot as plt
#引入numpy
import numpy as np
#准备数据
data = np.array([1,2,3,4,5])
plt.plot(data)
plt.show()
结果截图
多维折线图
import numpy as np
import matplotlib.pyplot as plt
x= np.linspace(0,2,100)
#画布对象
fig = plt.figure()
#区域对象
ax = fig.add_subplot(1,1,1)
#直线
ax.plot(x,x,label = "linear")
#平方
ax.plot(x,x*x,label = "quadratic")
#立方
ax.plot(x,x*x*x,label = "cubic")
#立图
ax.legend()
#坐标轴的标签
ax.set_xlabel("x label")
ax.set_ylabel("y label")
#设置标题
ax.set_title("simple plot")
plt.show()
或者
x = np.linspace(0, 2, 100)
plt.plot(x, x, label='linear')
plt.plot(x, x**2, label='quadratic')
plt.plot(x, x**3, label='cubic')
plt.xlabel('x label')
plt.ylabel('y label')
plt.title("Simple Plot")
plt.legend()
plt.show()
结果截图
折线图
import numpy as np
import matplotlib.pyplot as plt
#日期列表
date = np.arange(4,19)
#最高温
y_max = np.array([32,33, 34, 34, 33, 31, 30,29,30,29,26, 23, 21, 25, 31])
#最低温
y_min = np.array([19, 19,20,22,22,21,22, 16, 18,18,17, 14, 15,16,16])
#绘制最高温 r:折线颜色;o:坐标点的形状;-:折线的形状
plt.plot(date,y_max,"ro-",label = "max")
#绘制最低温 b:折线颜色;*:坐标点的形状;--:折线的形状
plt.plot(date,y_min,"b*--",label = "min")
#展示图例
plt.legend()
#设置下x,y轴文本标签
plt.xlabel("date")
plt.ylabel("temperature")
plt.title("date——temparature")
#展示
plt.show
结果截图
二、绘制柱状图
1.柱状图
pyplot的bar()函数语法格式:
bar(x, height, width=0.8 , bottom=None, align=‘center’, data=None, tick_label=None,
xerr =None, yerr=None, error_kw=None ,**kwargs)
该函数常用参数的含义如下:
x: 表示柱形的x坐标值
height: 表示柱形的高度
width: 表示柱形的宽度,默认为0.8
bottom : 表示柱形底部的的y坐标,默认为0
align: 表示柱形的对齐方式,有‘center’和’edge’,其中center 表示将柱形与刻度居中对齐;’edge’表示将柱 形的左边与刻度对齐。
tick_label: 表示柱形对应的刻度标签
xerr,yerr: 若未设为None ,则需要为柱形图添加水平/垂直误差棒
error_kw: 表示误差棒的属性字典,字典的键对应errorbar()函数的关键字参数。
代码如下(示例):
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(1,6)
y=np.array([10,8,5,12,15])
#bar
plt.bar(x,y,width=0.3,tick_label=['a','b','c','d','e'])
plt.show()
结果截图
2.多组柱状图
代码如下(示例):
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(1,6)
y1=np.array([10,8,5,12,15])
y2=np.array([8,6,10,15,13])
#bar
width=0.3
plt.bar(x,y1,width,tick_label=['a','b','c','d','e'])
plt.bar(x+width,y2,width)
plt.show()
结果截图
3.堆积柱状图
代码如下(示例):
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(1,6)
y1=np.array([10,8,5,12,15])
y2=np.array([8,6,10,15,13])
bar_width=0.3
#底部的柱形图
plt.bar(x,y1,width=bar_width,tick_label=['a','b','c','d','e'])
#上面的柱形图
plt.bar(x,y2,width=bar_width,bottom=y1)
plt.show()
结果截图
4.横向柱状图
pyplot 的barh()函数语法格式:
barh(y, width, height=0.8, left=None, align='center',tick_label=None, *, **kwargs)
该函数常用参数的含义如下。
y:表示条形的y坐标值。
width:表示条形的宽度,默认值为0.8。
height:表示条形的高度。
left:条形左侧的x坐标,默认为0。
align: 表示条形的对齐方式,有'center'和'edge'两个取值,其中'center' 表示将条形与刻度线居中对齐;
'edge'表示将条形的底边与刻度线对齐。
代码如下(示例):
import matplotlib.pyplot as plt
import numpy as np
x=np.array([10,8,5,12,15])
y=np.arange(1,6)
#barh
plt.barh(y,x,left=None,height=0.5,tick_label=['a','b','c','d','e'])
plt.show()
结果截图