python柱状图纵轴刻度_Python数据分析:Matplotlib
终于到了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之DataFramezhuanlan.zhihu.comailsa:python数据分析:Pandas之Serieszhuanlan.zhihu.comailsa:Python数据分析:Numpy基础zhuanlan.zhihu.com
到这里为止的话,python数据分析的三大库已经全部整理完毕,之前从未觉得知识点有这么多,但是说实话,这些内容算是整理的比较细致了,大家可以当作手册来参考,加油吧!
python柱状图纵轴刻度_Python数据分析:Matplotlib相关推荐
- matplotlib柱状图上方显示数据_Python数据分析matplotlib可视化之绘图!
Matplotlib是一个基于python的2D画图库,能够用python脚本方便的画出折线图,直方图,功率谱图,散点图等常用图表,而且语法简单. Python中通过matplotlib模块的pypl ...
- python 条形图填充疏密_Python数据分析 4:图表绘制工具Matplotlib
一.Matplotlib简介及图表窗口 Matplotlib是一个python版的matlab绘图接口,以2D为主,支持python.numpy.pandas基本数据结构,其特点为运营高效且具有丰富的 ...
- python显示数据长度_Python数据分析之初识可视化
一.数据可视化概述 数据可视化是在整个数据分析非常重要的一个辅助工具,可以清晰的理解数据,从而调整我们的分析方法. - 能将数据进行可视化,更直观的呈现 - 使数据更加客观.更具说服力 例如下面两个图 ...
- python pd Series 添加行_Python数据分析与挖掘的常用工具
Python语言:简要概括一下Python语言在数据分析.挖掘场景中常用特性: 列表(可以被修改),元组(不可以被修改) 字典(结构) 集合(同数学概念上的集合) 函数式编程(主要由lambda(). ...
- python绘制热图_python使用matplotlib绘制热图
python常用的绘图库就是matplotlib,今天在给公司绘图时,偶然间发现matplotlib可以绘制热图,并且十分简洁,拿出来跟大家分享一下.(由于涉及到公司数据问题,这里采用随机数生成数据进 ...
- 用python画动图_Python使用matplotlib画动态图
机器学习需要使用python实现相应的算法,因此学习了Matplotlib中的画图. 当然为了能显示机器学习中每次迭代的效果与收敛速度,需要画出动态图形. 下面给出两个例子,分别可以画出动态条形图和动 ...
- python画图显示中文_Python的matplotlib库画图不能显示中文问题解决
有两种解决办法: 一种是在代码里设置为能显示中文的字体,如微软雅黑(msyh.ttf)和黑体(simsun.ttc) 如下在要画图的代码前添加: import matplotlib.pyplot as ...
- python ppt 绘图_Python数据分析-Matplotlib绘图基础
本文结构: 一.Matplotlib绘图基础及中文乱码解决 二.如何利用pandas绘图? 三.如何利用notebook制作分析报告? 图形在我们日常生活中无处不在.如果没有可视化,就是一些数字罗列, ...
- python 可视化分析平台_python 数据分析数据可视化工具matplotlib
说明: 数据可视化中的数据集下载地址:(数据来源:从零开始学python数据分析和挖掘) 链接:https://pan.baidu.com/s/1zrNpzSNVHd8v1rGFRzKipQ 提取码: ...
最新文章
- BZOJ 2159 「国家集训队」Crash 的文明世界(第二类斯特林数,换根DP)【BZOJ计划】
- [C#]非阻塞监听键盘输入
- zlib 1.2.5 编译 ( VS2010 vc6 )
- Jenkins 管理界面里提示“反向代理设置有误“的问题解决办法
- Redis入门与数据类型介绍
- 2021牛客多校7 - xay loves trees(dfs序+主席树-标记永久化)
- activemq 修改服务端端口61616和控制台端口8161启动
- 移动端rem布局(阿里)
- oracle退出scott_Oracle_11g中解决被锁定的scott用户的方法(转载)
- javascript 源代码加密保护
- 请启动windows零配置(wzc)服务
- 数据库中的操作(语法)
- eclipse项目名前出现红色感叹号的原因及解决的方法
- (HR面试)最常见的面试问题和技巧性答复
- 中科大计算机电子信息,中国科学技术大学电子工程与信息科学系
- 业务:金融科技行业分析
- form表单的enctype
- JAVA获取自定义配置文件的kv值
- 数学的回忆(二)——麦克斯韦方程
- linux最好用的ftp服务器软件,Linux平台下快速搭建FTP服务器
热门文章
- 次坐标从0开始_三坐标测量机安全使用+量块校准操作规程
- MySQL:数据完整性
- matlab如何打开dcm_MatLab 与 visual studio 混合编程环境配置
- 亲测成功 office 2007 安装问题 无法找到OfficeLR.cab/OfficeMUI.msi
- K8S二进制环境搭建苹果电脑(M1芯片)
- 分享几款UI设计师快速提升工作效率的辅助设计软件
- excel函数提取计算机登录名,Excel查找函数FIND,帮你从复杂的地址中提取城市、区和街道名!-提取文件名...
- 面试须知的前端渲染和后端渲染
- openCV图片倾斜矫正(java版)
- 你的设备遇到问题,需要重启;我们只收集某些错误信息,然后为你重新启动。