终于到了python数据分析三剑客的最后一课:Matplotlib,一个专门用于绘制图形的库,话不多说,直接进入主题。

内容目录图形的构成

plot样式风格

plot保存图像

各种图形绘制

1 图形的构成

1.1 Figure

在绘制图形之前,我们需要一个Figure对象,可以理解成我们需要一张画板才能开始绘图。

import matplotlib.pyplot as plt # 约定俗成的写法

from pylab import *

mpl.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文乱码问题

plt.rcParams['axes.unicode_minus'] = False # 解决负号不显示的问题

fig = plt.figure()

plt.figure的参数:(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=, clear=False, **kwargs)num:图像编号或名称,数字为编号 ,字符串为名称

figsize:指定figure的宽和高,单位为英寸

dpi: 参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80, 1英寸等于2.5cm,A4纸是 21*30cm的纸张

facecolor: 背景颜色

edgecolor: 边框颜色

frameon: 是否显示边框

fig = plt.figure(num="hakg",figsize=(10,5),facecolor='g')

ax1 = fig.add_subplot(111)

ax1.set(xlabel="x",ylabel='y')

plt.plot(x,y)

这里只是为了展示figure的参数,我知道很丑

1.2 subplot

使用subplot可以在一个界面中显示多张图像。

参数:subplot(nrows,ncols,num,sharex,sharey,subplot_kw,**fig_kw)nrows:subplot的行数

ncols:subplot的列数,行X列就是被分成多少个图像区域

num:目前该图像位于第几个位置

sharex:所有subplot应该使用相同的X轴刻度(调节xlim将会影响所有的subplot)

sharey:所有subplot应该使用相同的Y轴刻度(调节ylim将会影响所有的subplot)

subplot_kw:用于创建各subplot的关键字字典

**fig_kw:创建figure时的其他关键字

plt.subplot(ijn) i代表划分为几行j为几列,n是指目前在第几个子区域内,这里也可以使用fig.subplot(ijn)

fig = plt.figure()

ax1 = fig.add_subplot(221) # 划分为2行2列四个区域,这是第一个区域,以下以此类推

ax1.set(title="标题1",ylabel='y',xlabel='x')

ax2 = fig.add_subplot(222)

ax2.set(title="标题2",ylabel='y',xlabel='x')

ax3 = fig.add_subplot(223)

ax3.set(title="标题3",ylabel='y',xlabel='x')

ax4 = fig.add_subplot(224)

ax4.set(title="标题4",ylabel='y',xlabel='x')

plt.show()

数据区域的划分顺序为:先行后列

1.3 Axes 轴

在拥有了Figure对象之后,我们还需要有对应的轴 和 标题

xlabel x轴 水平轴标签

ylabel y轴 垂直轴标签

title 标题

fig = plt.figure()

ax = fig.add_subplot(111)

ax.set(title="计算",ylabel='y',xlabel='x')

plt.show()

1.4 ticks 刻度

自定义设置x轴和y轴的刻度,但是这个功能一般很少用,默认的结果就能满足需求

x = [1,2,3,4]

y = [5,6,7,8]

plt.xticks([1,2,3,4]) # xticks x轴刻度

plt.yticks([5,6,7,8]) # yticks y轴刻度

plt.plot(x,y)

1.5 图例

plt.legend方法

常用参数:loc 图例的位置,默认是:upper right

ncol 图例分几列展示,默认为1

fontsize 图例字体大小

loc分类介绍

fontsize:{‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’}

详细参数参考如下(了解):

两种方式分别在plot函数中增加label参数,再调用plt.legend()方法显示

直接在legend方法中传入字符串列表

第一种方式

import numpy as np

x = np.linspace(-np.pi,np.pi,num=100)

y = x**2

plt.plot(x,y,label='dist')

plt.plot(x-3,y+2,label='temp')

plt.legend()

第二种方式

import numpy as np

x = np.linspace(-np.pi,np.pi,num=100)

y = x**2

plt.plot(x,y,c='r')

plt.plot(x-3,y+2)

plt.legend(["dist","temp"],loc="upper left",ncol=2)

1.6 网格线

plt.grid()

参数:(b, which, axis, color, linestyle, linewidth,**kwargs)b: True 或 False True就是显示,False就是不显示

which: 'major', 'minor', 'both',默认是both

axis: ‘both’,‘x’,‘y’,可以选择 y x,也就是指定选择x显示网格线或者y显示网格线,但是我尝试了之后发现不起作用,暂且记住这个功能吧

color: 颜色

linestyle: 线条

linewidth: 线条宽度

x = [1,2,3,4]

y = [5,6,7,8]

x1 = [10,10,12,12]

y1 = [20,15,10,6]

plt.plot(x,y,x1,y1)

plt.grid(True)

1.7 标签内容

plt.text()

参数: (x, y, s, weight="bold", color="b")x:注释文本内容或者数据标签所在位置的横坐标

y: 注释文本内容或者数据标签所在位置的纵坐标

s:注释文本内容或者数据标签

weight:注释文本内容的粗细风格

color:注释文本内容的字体颜色

其中x和yq确定文本在图像中显示的位置

第一种情况,只显示文本内容

x = np.linspace(0.05, 10, 1000)

y = np.sin(x)

plt.plot(x, y, ls="-.", lw=2, c="c", label="plot figure")

plt.legend()

plt.text(3.10, 0.09, "y=sin(x)", weight="bold", color="b")

plt.show()

第二种情况,数据标签

例如:柱状图,我们需要在每个柱上显示标签,因此这里操作有点麻烦,需要用到循环

示例

import pandas as pd

data = pd.read_excel('../data/picture_data.xlsx')

data.head()

计算每个部门的人数

dep = data["部门"].value_counts()

b = plt.bar(dep.index,dep.values)

plt.yticks(range(10))

for i in b:

plt.text(i.get_x() + i.get_width() / 2,i.get_height()+0.1,str(i.get_height()))

# i.get_x() 获取每个柱型的x轴位置

# i.get_width() 每个柱形的宽度

# i.get_height() 柱形的高度

不得不吐槽一下,这个数据标签,添加起来真心麻烦

2 plot的风格和样式

2.1 color 颜色

支持以下几种形式1 颜色名称

color颜色,不同字母代表不同颜色,用color或者c2 HTML十六进制字符串 例如:color=‘#FF0000’ 红色

3 支持RGB 归一化到[0,1] 例如:color=(0.3,0.3,0.3),如果你使用的是(234,23,14)需要分别除以256,归一化之后才能使用。

2.2 marker 图标

^就是三角形,o就是圆点,+就是加号型

如果上面看不太明白的话,可以参考这个,也可以自己手动试一试

符号对应的图形

o圆点

p五边形(看起来也有点像圆点)

h六边形(看起来也有点像圆点)

H旋转六边形(两顶点在线上)

d细菱形

D菱形

s正方形

^上三角

v(小v)下三角

<左三角

>右三角

1丫(这里称之为下箭头)

2上箭头

3左箭头

4右箭头

,像素

+加号

x叉形

X粗叉形

-水平线

2.3 linestyle 线条

2.4 大小linewidth 对于linestyle的线条的宽度设置,默认为2

markersize 对于marker图标的大小设置,默认为12

2.5 透明度

alpha参数 [0,1]之间

3 plot保存图像

plt.savefig() 保存图像

参数: (fname, dpi=None, facecolor='w', edgecolor='w',orientation='portrait', papertype=None, format=None, transparent=False, bbox_inches=None, pad_inches=0.1, frameon=None)fname 保存的文件位置+文件名,字符串形式

dpi 像素

其余的以后用到再研究,基本主要用到的是fname

import numpy as np

x = np.linspace(-np.pi,np.pi,num=100)

y = x**2

plt.plot(x,y)

plt.plot(x-3,y+2)

plt.legend(["dist","temp"])

plt.savefig('./pi')

4 常用图形

4.1 折线图

plt.plot()参数:(x, y, color='green', marker='o', linestyle='dashed',

linewidth=2, markersize=12)x和y对应横轴和纵轴的数据

color颜色,不同字母代表不同颜色

marker 显示不同的图标

linestyle 不同的线

linewidth 对于linestyle的线条的宽度设置,默认为2

markersize 对于marker图标的大小设置,默认为12

举个例子

x = [1,2,3,4]

y = [5,6,7,8]

plt.subplot(221)

plt.plot(x,y,c='r')

plt.subplot(222)

plt.plot(x,y,c='g',marker='o',linestyle="--")

plt.subplot(223)

plt.plot(x,y,'m^')

plt.subplot(224)

plt.plot(x,y,'y',linestyle=':',linewidth=6)

4.2 柱状图

plt.bar()

import pandas as pd

data = pd.read_excel('../data/picture_data.xlsx')

data.head()

需求1:绘制每个部门的人数总和

dep = data["部门"].value_counts()

b = plt.bar(dep.index,dep.values)

plt.yticks(range(10))

for i in b:

plt.text(i.get_x() + i.get_width() / 2,i.get_height()+0.1,str(i.get_height()))

4.3 条形图

plt.barh()

参数:(y, width, height, left, *, align='center')

需求:绘制每个部门的人数总和

b = plt.barh(dep.index,dep.values)

plt.xticks(range(10))

for i in b:

plt.text(i.get_width()+0.1,(i.get_y() + i.get_height() / 2),str(i.get_width()))

4.4 直方图

plt.hist()

参数

(x, bins=None, range=None, density=None, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, normed=None, hold=None, data=None, **kwargs)x:必选参数,绘图数据

bins:直方图的长条形数目,可选项,默认为10

normed:是否将得到的直方图向量归一化,可选项,默认为0,代表不归一化,显示频数。normed=1,表示归一化,显示频率。

facecolor:长条形的颜色

edgecolor:长条形边框的颜色

alpha:透明度

sale = data['实发工资']

plt.hist(sale)

2.5 饼图

plt.pie()

参数;(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False, rotatelabels=False, hold=None, data=None)startangle:参数设置饼图的起始角度

explode:每一块顶点距离圆心的长度

autopct:设置比例值,小数位数保留几位

labeldistance: 设置标签离圆心的距离

plt.pie(dep,labels = dep.index,autopct='%.2f%%')

2.6 散点图

plt.scatter()

参数:(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, hold=None, data=None, **kwargs)

h = data.pivot_table(index="部门",aggfunc={"员工姓名":"count","实发工资":"sum"})

plt.scatter(h.员工姓名,h.实发工资)

写到头皮发麻,下回继续,实在没有想到一个matplotlib竟然也有这么多东西要整理。

推荐阅读:ailsa:Python数据分析:Pandas之DataFrame​zhuanlan.zhihu.comailsa:python数据分析:Pandas之Series​zhuanlan.zhihu.comailsa:Python数据分析:Numpy基础​zhuanlan.zhihu.com

到这里为止的话,python数据分析的三大库已经全部整理完毕,之前从未觉得知识点有这么多,但是说实话,这些内容算是整理的比较细致了,大家可以当作手册来参考,加油吧!

python柱状图纵轴刻度_Python数据分析:Matplotlib相关推荐

  1. matplotlib柱状图上方显示数据_Python数据分析matplotlib可视化之绘图!

    Matplotlib是一个基于python的2D画图库,能够用python脚本方便的画出折线图,直方图,功率谱图,散点图等常用图表,而且语法简单. Python中通过matplotlib模块的pypl ...

  2. python 条形图填充疏密_Python数据分析 4:图表绘制工具Matplotlib

    一.Matplotlib简介及图表窗口 Matplotlib是一个python版的matlab绘图接口,以2D为主,支持python.numpy.pandas基本数据结构,其特点为运营高效且具有丰富的 ...

  3. python显示数据长度_Python数据分析之初识可视化

    一.数据可视化概述 数据可视化是在整个数据分析非常重要的一个辅助工具,可以清晰的理解数据,从而调整我们的分析方法. - 能将数据进行可视化,更直观的呈现 - 使数据更加客观.更具说服力 例如下面两个图 ...

  4. python pd Series 添加行_Python数据分析与挖掘的常用工具

    Python语言:简要概括一下Python语言在数据分析.挖掘场景中常用特性: 列表(可以被修改),元组(不可以被修改) 字典(结构) 集合(同数学概念上的集合) 函数式编程(主要由lambda(). ...

  5. python绘制热图_python使用matplotlib绘制热图

    python常用的绘图库就是matplotlib,今天在给公司绘图时,偶然间发现matplotlib可以绘制热图,并且十分简洁,拿出来跟大家分享一下.(由于涉及到公司数据问题,这里采用随机数生成数据进 ...

  6. 用python画动图_Python使用matplotlib画动态图

    机器学习需要使用python实现相应的算法,因此学习了Matplotlib中的画图. 当然为了能显示机器学习中每次迭代的效果与收敛速度,需要画出动态图形. 下面给出两个例子,分别可以画出动态条形图和动 ...

  7. python画图显示中文_Python的matplotlib库画图不能显示中文问题解决

    有两种解决办法: 一种是在代码里设置为能显示中文的字体,如微软雅黑(msyh.ttf)和黑体(simsun.ttc) 如下在要画图的代码前添加: import matplotlib.pyplot as ...

  8. python ppt 绘图_Python数据分析-Matplotlib绘图基础

    本文结构: 一.Matplotlib绘图基础及中文乱码解决 二.如何利用pandas绘图? 三.如何利用notebook制作分析报告? 图形在我们日常生活中无处不在.如果没有可视化,就是一些数字罗列, ...

  9. python 可视化分析平台_python 数据分析数据可视化工具matplotlib

    说明: 数据可视化中的数据集下载地址:(数据来源:从零开始学python数据分析和挖掘) 链接:https://pan.baidu.com/s/1zrNpzSNVHd8v1rGFRzKipQ 提取码: ...

最新文章

  1. BZOJ 2159 「国家集训队」Crash 的文明世界(第二类斯特林数,换根DP)【BZOJ计划】
  2. [C#]非阻塞监听键盘输入
  3. zlib 1.2.5 编译 ( VS2010 vc6 )
  4. Jenkins 管理界面里提示“反向代理设置有误“的问题解决办法
  5. Redis入门与数据类型介绍
  6. 2021牛客多校7 - xay loves trees(dfs序+主席树-标记永久化)
  7. activemq 修改服务端端口61616和控制台端口8161启动
  8. 移动端rem布局(阿里)
  9. oracle退出scott_Oracle_11g中解决被锁定的scott用户的方法(转载)
  10. javascript 源代码加密保护
  11. 请启动windows零配置(wzc)服务
  12. 数据库中的操作(语法)
  13. eclipse项目名前出现红色感叹号的原因及解决的方法
  14. (HR面试)最常见的面试问题和技巧性答复
  15. 中科大计算机电子信息,中国科学技术大学电子工程与信息科学系
  16. 业务:金融科技行业分析
  17. form表单的enctype
  18. JAVA获取自定义配置文件的kv值
  19. 数学的回忆(二)——麦克斯韦方程
  20. linux最好用的ftp服务器软件,Linux平台下快速搭建FTP服务器

热门文章

  1. 次坐标从0开始_三坐标测量机安全使用+量块校准操作规程
  2. MySQL:数据完整性
  3. matlab如何打开dcm_MatLab 与 visual studio 混合编程环境配置
  4. 亲测成功 office 2007 安装问题 无法找到OfficeLR.cab/OfficeMUI.msi
  5. K8S二进制环境搭建苹果电脑(M1芯片)
  6. 分享几款UI设计师快速提升工作效率的辅助设计软件
  7. excel函数提取计算机登录名,Excel查找函数FIND,帮你从复杂的地址中提取城市、区和街道名!-提取文件名...
  8. 面试须知的前端渲染和后端渲染
  9. openCV图片倾斜矫正(java版)
  10. 你的设备遇到问题,需要重启;我们只收集某些错误信息,然后为你重新启动。