Python可视化知识点总结(1):Matplotlib
2019-04-17 本文已影响7人
LucasOoo
一、简介
Matplotlib是一个Python 2D绘图库,它可以在各种平台上以各种硬拷贝格式和交互式环境生成出具有出版品质的图形。 Matplotlib可用于Python脚本,Python和IPython shell,Jupyter笔记本,Web应用程序服务器和四个图形用户界面工具包
Matplotlib试图让简单的事情变得更简单,让无法实现的事情变得可能实现。 只需几行代码即可生成绘图,直方图,功率谱,条形图,错误图,散点图等。 有关示例,请参阅示例图和缩略图库。
为了简单绘图,pyplot模块提供了类似于MATLAB的界面,特别是与IPython结合使用时。 对于高级用户,您可以通过面向对象的界面或MATLAB用户熟悉的一组函数完全控制线条样式,字体属性,轴属性等。
二、相关文档
官网教程文档:https://matplotlib.org/users/index.html
三、图形绘制
1、导入常用API
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
2、切割画布
plt.subplots(nrow,#切割的行数
ncols,#切割的列数
sharex,sharey,#所有subplot享用同一x/y轴刻度)
plt.subplot(2,1,1)#在第一个画布上绘制
plt.plot(x,y)#作图
3、常用画布调整函数:
#绘制标题
plt.title('text')
#调整画布大小
import pylab
%pylab inline
pylab.rcParams['figure.figsize'] = (10, 6)
plt.xlim(min,max)#限定X轴的范围
plt.ylim(min,max)#限定Y轴范围
plt.legend()#图例说明
#添加文字
plt.text(x,y ,#坐标处
s=‘text’,#显示的文本
fontdict=None,
ha='center'#水平位置(horizontal)
va=‘bottom’#垂直位置(vertical))
plt.grid()#绘制参考线
plt.xticks([1,2,3],['A','B','C'])#将横坐标名称1、2、3替换成A、B、C
#绘制水平线
plt.hlines(y = np.mean(x,axis = 0)[1] #描线位置,
xmin =0,#水平线起点
xmax=3#水平线终点)
#给图形添加注释
plt.annotate(s='Points',#注释文本
xy=(1, np.sin(1)),#注释的坐标点
xytext=(2, 0.5), fontsize=16,#文本坐标点,字体大小
arrowprops=dict(arrowstyle="->")#箭头形式)
4、绘制柱状图
plt.bar(x,y)#纵向柱状图
plt.barh(x,y)#横向柱状图
在一个图中绘制多个柱状图:
data = [[5,25,50,20],
[4,23,51,17],
[6,22,52,19]]
X = np.arange(4)
plt.bar(X + 0.00, data[0], color = 'b', width = 0.25,label = "A")
plt.bar(X + 0.25, data[1], color = 'g', width = 0.25,label = "B")
plt.bar(X + 0.50, data[2], color = 'r', width = 0.25,label = "C")
plt.legend()
绘制堆栈柱状图:
data = [[5,25,50,20],
[4,23,51,17],
[6,22,52,19]]
X = np.arange(4)
plt.bar(X, data[0], color = 'b', width = 0.25)
plt.bar(X, data[1], color = 'g', width = 0.25,bottom = data[0])
plt.bar(X, data[2], color = 'r', width = 0.25,bottom = np.array(data[0]) + np.array(data[1]))
plt.show()
5、绘制散点图
N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.randn(N)
area = np.pi * (15 * np.random.rand(N))**2 # 调整大小
plt.scatter(x, y, #x,y的数据集
c=colors, #点颜色
alpha=0.5, #点透明度
s = area#点面积)
6绘制直方图
直方图是用来衡量连续变量的概率分布的。在构建直方图之前,我们需要先定义好bin(值的范围),也就是说我们需要先把连续值划分成不同等份,然后计算每一份里面数据的数量。
a = np.random.randn(10000)
plt.hist(a,bins=50)
plt.title("Standard Normal Distribution")
7、绘制箱型图
boxlot用于表达连续特征的百分位数分布。统计学上经常被用于检测单变量的异常值,或者用于检查离散特征和连续特征的关系
image.png
x = np.random.randint(20,100,size = (30,3))
plt.boxplot(x)
8、绘制饼状图
plt.pie(x,#数据
explode=(a,b,c),#分割板块
labels=None,#不同板块标签
colors=None,#不同板块颜色
labeldistance=1.1,#label text的距离,1.1指1.1倍半径距离
autopct=‘%3.1f%%’,#显示百分比
pctdistance=#百分比text距圆心距离
)
9、采用subplots绘制多个图形步骤
fig, axes = plt.subplots(nrows=2, ncols=2,
facecolor='darkslategray'#面板颜色)
ax0, ax1, ax2, ax3 = axes.flatten()#axes是存储子画布的矩阵,通过flatten函数变为一位数组