Python数据分析笔记之简单绘图和可视化--Matplotlib

一、学习准备

说起绘图,你可能会想到:

手绘图?-- os: 大脑:“我会了“ 手:”不, 你不会“

excel绘图?–os :画出的图好像跟我想的不一样

在这里插入图片描述

小编强烈推荐:

用Python来画图!

瞧好啦,看python如何让你眼前一亮

首先我们先来导入一个专门进行绘图的库—matplotlib

怎么导?

在命令行中输入

pip install matplotlib -i https://pypi.doubanio.com/simple   //-i后面试镜像,用于加快下载速度

怎么用?

import matplotlib.pyplot as plt

是什么?

matplotlib:matplotlib 是 Python 最著名的绘图库,它提供了一整套和 matlab 相似的命令 API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入 GUI 应用程序中
---------------------------------------------------------------------------------------------------------------我是分割线-------
pyplot:Matplotlib 软件包中子包,提供了一个类似MATLAB的绘图框架,支持 Python 语言
--------------------------------------------------------------------------------------------------------------我是分割线--------
plt:一个别名,在编程过程中来替代matplotlib.pyplot,当然这个别名是随自己修改的,单一般使用plt,方便别人看懂自己的代码

OK,准备完成,我们来小试牛刀

二、知识点

import matplotlib.pyplot as plt
import numpy as np
# %matplotlib inline #图像不显示则导入
# plt show 展示
# plt cla 清除当前的子图axes
# plt clf 清除当前的画布figure
# plt.gcf 取出之前的画布
# fig 可以用于设置画布大小

1.线性图

易于显示数据变化趋势,可以直观地反映这种变化以及各组之间的差别

1.1 熟悉的一元一次函数
# 绘制一条直线
x = np.linspace(0,10,5)  #设置x轴的值 
y = (x+2)/2              #设置y轴的值
plt.plot(x,y)            #使用plot画出来

在这里插入图片描述

1.2 双直线
# 绘制多条直线
plt.plot(x,y,x+1,y+1)

在这里插入图片描述

1.3 设置图的大小比例
# 设定坐标系的大小比例
plt.figure(figsize=(2,4))  #2,4表示图的长宽,单位为英尺,所以我们看起来好像不太成正比
plt.plot(x,y)

在这里插入图片描述

1.4 设置图的样式
# 线段的样式,样式比较多,这里只是一个小例子,实现了我们的图片个性化
plt.plot(x,x+2,'r--o')  # r 为红色,--为线段样式,o为标记字符

在这里插入图片描述

1.5 图的应用
 #  设置图例legend() ;加入标识xlabel(),ylabel(),title()
a = np.linspace(-np.pi,np.pi,num=5)  # np.pi是一个常数表示圆周率π,
b = 1-a**2
plt.plot(a,b,label='ab')
plt.plot(x,y,label='xy')            #x和y是上一张图里面的值
plt.legend()                        #图例:区别不同的线
plt.xlabel('temp')                  #x轴标识
plt.ylabel('dist')                  #y轴标识
plt.title('tempdist')               #标题

python存在许多数学函数的表示,可以用于日常的应用中
在这里插入图片描述

1.6 实现图像保存
# 保存图像
# 1.实例化fig
fig = plt.figure(facecolor='snow')
# 2.画图
a = np.linspace(-np.pi,np.pi,num=5)
b = 1-a**2
plt.plot(a,b,label='ab')
plt.plot(x,y,label='xy')            #x和y是上一张图里面的值
plt.legend()                        #图例:区别不同的线
plt.xlabel('temp')                  #x轴标识
plt.ylabel('dist')                  #y轴标识
plt.title('tempdist')               #标题
# 3.保存
fig.savefig('./xy.png',dpi=100) #dpi像素大小

在这里插入图片描述

2.柱状图

利用柱子的高度,反映数据的差异,肉眼对高度差异很敏感

x = ['崩','哒','拉','妲']
y = [4,4,7,9]
plt.rcParams['font.sans-serif'] = ['SimHei'] #设置中文的样式,这样轴对应的字段才能显示中文
plt.grid(color='g',linestyle='--',alpha=0.2) # 设置网格线和透明度
plt.bar(x,y)

在这里插入图片描述

plt.barh(x,y)  #使用这个方法把图的x和y轴置换

在这里插入图片描述

3.直方图

整理计量值的观测数据,分析其分布状态的统计方法,用于对总体的分布特征进行推断

x = [1,2,2,3,3,3,4]
# bins为柱子的个数    (1-1.3)为1,(1.3-1.6)为0
plt.hist(x,bins=10)
(array([1., 0., 0., 2., 0., 0., 3., 0., 0., 1.]),
 array([1. , 1.3, 1.6, 1.9, 2.2, 2.5, 2.8, 3.1, 3.4, 3.7, 4. ]),
 <a list of 10 Patch objects>)

]

# normed 归一化处理(第一个array为0到1)
plt.hist(x,normed=True)
(array([0.47619048, 0.        , 0.        , 0.95238095, 0.        ,
        0.        , 1.42857143, 0.        , 0.        , 0.47619048]),
 array([1. , 1.3, 1.6, 1.9, 2.2, 2.5, 2.8, 3.1, 3.4, 3.7, 4. ]),
 <a list of 10 Patch objects>)

在这里插入图片描述

4.饼图

主要用于总体中各组成部分所占比重的研究

# 最简单的饼图
arr = [11,12,43,51]
plt.pie(arr)

在这里插入图片描述

# 不完整的饼图
arr1 = [0.3,0.2,0.1]
plt.pie(arr1)

在这里插入图片描述

# 标识  labeldistance labels为距离圆心的位置;autopct为占比;shadow为阴影;explodew为饼距离圆心的位置
arr2 = [1,3,4,7]
plt.pie(arr2,labels=['a','b','c','d'],labeldistance=1.2,autopct='%.2f%%',shadow=True,explode=[0.1,0.1,0.1,0.1])

这样就比较可视化,占比和类别都特别清楚

在这里插入图片描述

5.散点图

让我们发现变量之间隐藏的关系为我们决策作出重要的引导作用

x = np.linspace(-np.pi,np.pi,10)
y = x**2
plt.rcParams['axes.unicode_minus']=False #用来显示负号
plt.scatter(x,y)

在这里插入图片描述

x = np.random.random(20)
y = np.random.random(20)
plt.scatter(x,y)

在这里插入图片描述

6.箱型图

同一数轴上,几批数据的箱形图并行排列,几批数据的中位数、尾长、异常值、分布区间等形状信息一看便知,在观察异常值方面,分析数据的时候比较适合

x = np.random.normal(size=1000)
plt.boxplot(x)
plt.show()

在这里插入图片描述
到这里,基本的图形已经介绍完了,当然这些只是最最简单和常见的图例,我们已经可以看到,一段很少的代码就可以定制自己的图,使这个图拥有个人的色彩

三、后记

大家喜欢小编的文章记得多多点赞呀!!
小编能力有限,如果这篇文章有错误还烦请大家指出,一起进步,一起成长!!
最后附上小编的Pandas和Numpy的学习链接

Pandas:https://blog.csdn.net/weixin_45127640/article/details/107217307
Numpy:
https://blog.csdn.net/weixin_45127640/article/details/106696613

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页