一、概述
Matplotlib
是python中的一个包,主要用于绘制2D图形(当然也可以绘制3D,但是需要额外安装支持的工具包)。在数据分析领域它有很大的地位,而且具有丰富的扩展,能实现更强大的功能。能够生成各种格式的图形(诸如折线图,散点图,直方图等等),界面可交互(可以利用鼠标对生成图形进行点击操作),同时该2D图形库跨平台,即既可以在Python脚本中编码操作,也可以在Jupyter Notebook
中使用,以及其他平台都可以很方便的使用Matplotlib图形库。
实例:
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
x = np.linspace(0,2*np.pi,100)
y = np.sin(x)
plt.plot(x,y)
结果:
二、Matplotlib简单绘图(plot)
实例:
a = [1, 2, 3]
b = [4, 5, 6]
plt.plot(a, b)
#将线条设置成--
plt.plot(a, b, '--')
运行结果:
--线条结果
实例:
- 在一个坐标轴画两个图
a = [1, 2, 3]
b = [4, 5, 6]
plt.plot(a, b)
c = [10,8,6]
d = [1,8,3]
#第一个图的线条为红色--
#第二个图的为蓝色*
plt.plot(a,b, 'r--', c,d, 'b*')
运行结果:
实例:
- X/Y轴label设置
t = np.arange(0.0, 2.0, 0.1)
s = np.sin(t*np.pi)
#画图
plt.plot(t,s,'r--',label='aaaa')
plt.plot(t*2, s, 'b--', label='bbbb')
plt.xlabel('this is x')
plt.ylabel('this is y')
plt.title('this is a demo')
plt.legend()#显示样式
运行结果:
三、Matplotlib绘图(Subplot)
- 多个坐标轴多个图
实例:
x = np.linspace(0.0, 5.0)
y1 = np.sin(np.pi*x)
y2 = np.sin(np.pi*x*2)
plt.subplot(221)#表示生成2行2列,在第1个坐标轴里画图
plt.plot(x, y1, 'b--')#第一个图
plt.ylabel('y1')
plt.subplot(222)#表示生成2行2列,在第2个坐标轴里画图
plt.plot(x, y2, 'r--')#第二个图
plt.ylabel('y2')
plt.xlabel('x')
plt.subplot(223)#表示生成2行2列,在第3个坐标轴里画图
plt.plot(x, y1, 'r*')#第三个图
plt.subplot(224)
plt.plot(x, y1, 'b*')#第四个图
plt.show()#显示图画
运行结果:
实例:
figure, ax = plt.subplots(2,2)
ax[0][0].plot(x, y1)#在第1坐标轴画图
ax[0][1].plot(x, y2)#在第2坐标轴画图
plt.show()
运行结果:
四、Pandas绘图
*Series
首先我们导入所有的模块:
import numpy as np
import pandas as pd
from pandas import Series,Dataframe
import matplotlib.pyplot as plt
实例:
s1 = Series(np.random.randn(1000)).cumsum()
s2 = Series(np.random.randn(1000)).cumsum()
s1.plot(kind='line',grid=True, label='S1', title='This is Series')
s2.plot(label='S2')
plt.legend()
plt.show()
运行结果:
实例:
fig, ax = plt.subplots(2,1)
print(ax)
print('*******************')
ax[0].plot(s1)
ax[1].plot(s2)
plt.show()
运行结果:
实例:
#使用subplots
fig, ax = plt.subplots(2,1)
s1[0:10].plot(ax=ax[0], label='S1', kind='bar')
s2.plot(ax=ax[1], label='S2')
plt.show()
运行结果:
- DataFrame
实例:
df = DataFrame(
np.random.randint(1,10,40).reshape(10,4),
columns=['A','B','C','D']
)
#柱状图
df.plot(kind='bar')
plt.show()
#横柱
df.plot(kind='barh')
plt.show()
df.plot(kind='bar', stacked=True)
plt.show()
#面积图
df.plot(kind='area')
plt.show()
运行结果:
运行结果
五、matplotlib里的直方图和密度图
- 直方图
实例:
#直方图
s = Series(np.random.randn(1000))
plt.hist(s, rwidth=0.9)
print(plt.hist(s, rwidth=0.9))
print('****************')
plt.show()
a = np.arange(10)
plt.hist(a,rwidth=0.9)
plt.show()
re = plt.hist(s, rwidth=0.9)
print(len(re))
print('****************')
print(re[0])
print('****************')
print(re[1])
print('****************')
print(re[2])
plt.show()
plt.hist(s, rwidth=0.9,bins=20, color='r')#设置为红色
plt.show()
运行结果:
运行结果
运行结果
- 密度图
实例:
#将`kind`参数设置`kde`
s.plot(kind='kde')
print(s.plot(kind='kde'))
plt.show()
运行结果
网友评论